Super Grate

Index

Setup

Quick start

  1. Simply download from one of the following sources:
  2. Run and done!

Unified store setup

Super Grate fully supports unification of its various components, for example:

  • Unified Backup Store
  • Unified Configuration
  • Unified USMT Configuration
  • Unified Logging

Super Grate supports all of this by simply supporting UNC paths.

Try placing SuperGrate.exe on a shared folder and configuring its settings and paths to also point at a shared folder. You can also set permissions on the folders to lock down what Super Grate users can do. (for instance: write protecting the SuperGrate.xml)

1.2.0.0 to 1.3.0.0 upgrade guide

Upgrading SuperGrate.xml

  1. Open the new Super Grate after replacing the old executable.
  2. Navigate to “File”, then “Settings…” or press the “F12” on your keyboard.
  3. Press “Save to Disk” to add the new settings to your SuperGrate.xml

Upgrading the backup store

  1. Download the following PowerShell script from here: store_upgrade_1.2.0.0_1.3.0.0.ps1.
  2. Copy the script to your SuperGrate directory where the STORE folder is located. (Do not copy into the STORE folder).
  3. Execute the .ps1 script, there should be no errors.

Conclusion

After running the steps above, Super Grate should run without a hitch.

User guide

Backing up a user profile

Backing up a user profile using Super Grate is “Super Easy”.

  1. Enter the computer’s hostname in the “Source Computer” text box.
    • (Optional) Enter a destination computer in the “Destination Computer” text box to perform a Full Migration.
  2. Press “List Source” to generate a list of User Profiles available on the Source Computer.
  3. Select the User(s) you would like to back up.
  4. Press “Start”.

Restoring a user profile

Restoring a user profile is just as easy as Backing up a User Profile.

  1. Enter a Computer’s Host-name in the “Destination Computer” text box.
  2. Press “List Store” to display a list of Profiles available in the Backup Store.
  3. Select the Users you would like to restore to the “Destination Computer”.
  4. Press “Start”.

Optional

Optionally you want to restore a user profile onto another domain or as a different user name, follow the steps below.

  1. After performing a backup like normal, click “List Store”.
  2. Right click the user you want to rename.
  3. Select “Set destination user name…”
  4. In the dialog, enter the new username or domain and username e.g:

%DOMAIN%\%USERNAME% or %USERNAME% ➡ BELOWAVERAGE\dylan or dylan

Performing a full migration

full migration is a Super Grate sequence where both the “Source Computer” and “Destination Computer” are occupied. When the backup / migration is started, Super Grate will back up the user profiles selected from the “Source Computer” to the store, then connect to the “Destination Computer” and apply the user profiles selected from the “Source Computer”.

There are options in the SuperGrate.xml and settings menu that can change the behavior presented above.

Deleting a profile on a source computer

To delete a profile on a source compuer you must:

  1. Enter a PC name in the “Source Computer” field.
  2. Press “List Source”.
  3. Select the user profile(s) to delete.
  4. Press the “Delete” button.
  5. In the message that appears, select “Accept”.

Deleting a profile from the store

To delete a profile from the store you must:

  1. Press “List Store”.
  2. Select the profile(s) to delete.
  3. Press “Delete”.
  4. In the message that appears, select “Accept”.

Customize columns

To customize the shown columns, first either click on “List Source” or “List Store”, then select “View” and then “Add/Remove Columns…”. In the dialog that appears, add, remove, move up, or move down any column as required. Once done, select “OK”.

If you want to save your customizations for when Super Grate is launched again, go to “File”, “Settings…”, then press “Save to Disk”. This will save your modifications made to the columns to the SuperGrate.xml config file.

Check for updates

To check for updates in Super Grate, first go to “Help”, then select “Check for updates…”. You should be re-directed to the GitHub downloads page where a new update may be able to be downloaded.

Command line switches

Super Grate supports configuration over CLI (Command Line Interface) switches. This means you can create custom shortcuts and launch Super Grate with specific settings.

Note: CLI Switches override SuperGrate.xml settings.

To use a CLI switch, do the following:

C:\>SuperGrate.exe /NameOfSetting:Value

or:

C:\>SuperGrate.exe /NameOfSetting:"Value"

for example:

C:\>SuperGrate.exe /HideBuiltInAccounts:"false"

For a list of settings, see: SuperGrate.xml

Developer guide

Compiling Super Grate

Compiling Super Grate is easy to do; first, you need to download and install a copy of Microsoft’s Visual Studio (VS). — The community edition will do — Once done, clone this repository using VS’ “Get Started” page. Lastly, open the solution and press the green “Start / Play” button. This will compile and start Super Grate.

  1. Select “Batch Build” from the “Build” tab in the top menu bar.
  2. Check “Release” & “Release_64” then press “Rebuild”.
  3. SuperGrate.exe should be available in the bin folder of the project.

Debugging Super Grate

While using Super Grate, you might encounter errors. You may post any errors you get to here.

Below are some notes about logging:

  • To display Verbose logs in the output console, double press anywhere in the “black” log area.
  • To save all logs including Verbose logs to a file, press “CTRL + S” at the main screen.
  • To automatically save log files to disk whenever Super Grate is used:
    1. Select “Settings”.
    2. Double click “DumpLogHereOnExit”.
    3. Enter “.\Logs” & Press “Apply”
    4. Press “Save to Disk” then press “Close”

Inner workings

Backup store

The backup store or just “store” when using Super Grate is a directory on a share drive or local drive that “stores” the user profiles after they have been backed-up. Whether you performed a full migration or just a simple profile backup, the data transferred is stored here.

The file structure of the store is as follows:

  • Base Folder (Specified in the SuperGrate.xml or Settings Menu)
    • User Profile Folder (Named a generic GUID, Can be any name)
      • data: A single file containing the backed-up profile.
      • destination: A file containing the name of the destination computer where the profile last was exported too.
      • exportedby: A file containing the name of the user who last exported the stored user profile.
      • exportedon: A file containing the date of when the profile was last exported in windows file time
      • importedby: A file containing the name of the user who imported the user profile.
      • importedon: A file containing the date of when the profile was imported in windows file time.
      • ntaccount: A file containing the name of the user profile that was imported.
      • targetntaccount: A file containing the target user name and domain to use when restoring the profile.
      • sid: A file containing the SID of the user profile that was imported.
      • source: A file containing the name of the source computer the profile originated from.

An example of the above may look like this below:

  • C:\Program Files\Super Suite\Super Grate\STORE (Folder)
    • bf31d643-27a7-4e5d-a4e5-277a4c5cc9d0 (Folder)
      • data (File | RAW Data)
      • destination (File | “DOMAIN\BA-PC02”)
      • exportedby (File | “DOMAIN\Dylan.Bickerstaff”)
      • exportedon (File | “132312220838407695”)
      • importedby (File | “DOMAIN\Dylan.Bickerstaff”)
      • importedon (File | “132312220838407695”)
      • ntaccount (File | “DOMAIN1\Administrator1”)
      • targetntaccount (File | “DOMAIN2\Administrator2”)
      • sid (File | “S-1-5-21-3623811015-3361044348-30300820-1013”)
      • source (File | “DOMAIN\BA-PC01”)

SuperGrate.xml

The SuperGrate.xml is a file that is automatically generated if it doesn’t exist in the “current working directory”. This file contains the preferences from the “Settings” menu.

Below is an example of the SuperGrate.xml file:

<?xml version="1.0" encoding="utf-8"?>
<SuperGrate>
  <!--The UNC or Direct path to the USMT directory. (E.g: .\USMT\X64)-->
  <USMTPathX64>.\USMT\X64</USMTPathX64>
  <USMTPathX86>.\USMT\X86</USMTPathX86>
  <!--Local path on source computer where Super Grate will run USMT from. (E.g: C:\SuperGrate)-->
  <SuperGratePayloadPath>C:\SuperGrate</SuperGratePayloadPath>
  <!--The UNC or Direct path to the USMT Migration Store (E.g: \\ba-share\s$ or .\STORE)-->
  <MigrationStorePath>.\STORE</MigrationStorePath>
  <!--ScanState.exe & LoadState.exe CLI Parameters. See: https://docs.microsoft.com/en-us/windows/deployment/usmt/usmt-command-line-syntax -->
  <ScanStateParameters>/config:Config_SettingsOnly.xml /i:MigUser.xml /c /r:3 /o</ScanStateParameters>
  <LoadStateParameters>/config:Config_SettingsOnly.xml /i:MigUser.xml /c /r:3 /lac /lae</LoadStateParameters>
  <!--Delete the user from the migration store after a restore? (store to destination)-->
  <AutoDeleteFromStore>false</AutoDeleteFromStore>
  <!--Delete the user from the source computer after a backup? (source to store)-->
  <AutoDeleteFromSource>false</AutoDeleteFromSource>
  <!--Prevent NT AUTHORITY & NT SERVICE accounts from being listed?-->
  <HideBuiltInAccounts>true</HideBuiltInAccounts>
  <!--Prevent unknown accounts from being listed?-->
  <HideUnknownSIDs>false</HideUnknownSIDs>
  <!--Write log to disk on exit. (Leave blank to disable) (E.g: \\ba-share\s$\Logs or .\Logs)-->
  <DumpLogHereOnExit>.\LOGS</DumpLogHereOnExit>
  <!--List of columns to display for the Source or Store users.-->
  <ULSourceColumns>0,3,9</ULSourceColumns>
  <ULStoreColumns>0,1,5,6,4</ULStoreColumns>
  <!--User List View Mode: Large (0) / Small Icon (2), List (3), Details (1) and Tile (4).-->
  <ULViewMode>1</ULViewMode>
  <!--Default source computer at startup.-->
  <SourceComputer></SourceComputer>
  <!--Default destination computer at startup.-->
  <DestinationComputer></DestinationComputer>
  <!--Default tab view at startup: Source, Store, None.-->
  <TabView>None</TabView>
  <!--Security Protocol Version (Restart Required): SystemDefault, Ssl3, Tls, Tls11, Tls12, Tls13.-->
  <SecurityProtocol>Tls12</SecurityProtocol>
</SuperGrate>

Flow chart

Common issues

WMI (Windows Management Instrumentation)

Super Grate uses WMI to function, if WMI is corrupt or disabled on the remote PC you may experience issues, for example:

[INFO]<12:11:28 AM> Getting list of users on: BA-DYLANPC...
[ERROR]<12:11:28 AM> The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

[VERBOSE]<12:11:28 AM> ERROR
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at System.Management.ManagementScope.InitializeGuts(Object o)
   at System.Management.ManagementScope.Initialize()
   at SuperGrate.WMI.<>c__DisplayClass0_0.<Query>b__0()
[ERROR]<12:11:28 AM> Failed to query via WMI.
[ERROR]<12:11:28 AM> Object reference not set to an instance of an object.
[VERBOSE]<12:11:28 AM> ERROR
   at SuperGrate.Misc.<>c__DisplayClass6_0.<<GetUsersFromHost>b__0>d.MoveNext()
[ERROR]<12:11:28 AM> Failed to get a list of users. Please make sure that the specified host is valid and online and that you are an administrator of: BA-DYLANPC

To fix, enable WMI and run this command on the remote PC as an administrator: winmgmt /resetrepository

https://learn.microsoft.com/en-us/windows/win32/wmisdk/winmgmt

Could not find file USMT.MIG

The “could not find file USMT.MIG” issue can be very misleading. Super Grate is attempting to copy the migration file after USMT finished, but if you look closely at the log, you can see that USMT never actually ran. In between the lines “Waiting for scanstate to finish...” and “USMT Finished.” should be output from logs from USMT. The error “Could not find file 'C:\SuperGrate\USMT\USMT.MIG'.” in this case is misleading because it is a symptom and not a cause to the issue at hand; which is, USMT not starting.

[SUCCESS]<12:19:26 AM> USMT uploaded successfully.
[INFO]<12:19:26 AM> Capturing user state: 'BELOWAVERAGE\dylan' on 'BA-DYLANPC'...
[VERBOSE]<12:19:26 AM> Waiting for scanstate to finish...
[SUCCESS]<12:19:27 AM> USMT Finished.
[INFO]<12:19:30 AM> Uploading user state to the Store...
[ERROR]<12:19:30 AM> Could not find file 'C:\SuperGrate\USMT\USMT.MIG'.
[VERBOSE]<12:19:30 AM> ERROR
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileInfo.get_Length()
   at SuperGrate.IO.FileOperations.CopyFile(String Source, String Destination)
   at SuperGrate.USMT.<>c__DisplayClass17_0.<<UploadToStore>b__0>d.MoveNext()
[ERROR]<12:19:30 AM> Failed to upload user state to the Store.
[INFO]<12:19:30 AM> Removing USMT from: BA-DYLANPC...
[SUCCESS]<12:19:30 AM> USMT removed successfully.
[INFO]<12:19:30 AM> Done.

When encountering this issue, you may want to review the values of ScanStateParameters, LoadStateParameters, and SuperGratePayloadPath in the SuperGrate.xml file.

  • ScanStateParameters & LoadStateParameters
    • Make sure that the XML files listed in the parameters actually exist in your USMT folder.
  • SuperGratePayloadPath
    • Make sure that this path exists on your remote / target PC and that it is not a UNC path.

As a last resort, try deleting the USMT folder and SuperGrate.xml file and re-launch Super Grate. When Super Grate starts a new migration it will automatically generate a new SuperGrate.xml and USMT folder with a copy of USMT from the Super Grate GitHub repository.

Other issues

https://github.com/belowaverage-org/SuperGrate/issues

Scroll to Top