Coder Social home page Coder Social logo

belowaverage-org / supergrate Goto Github PK

View Code? Open in Web Editor NEW
171.0 6.0 21.0 106.44 MB

💾 Get moving with Super Grate; a free & open source Windows Profile Migration & Backup Utility. Super Grate is a GUI (Graphical User Interface) that assists Microsoft's USMT (User State Migration Utility) in performing remote migrations over a network connection.

Home Page: https://belowaverage.org/software/supergrate

License: GNU General Public License v3.0

C# 98.96% PowerShell 1.04%
usmt gui user state migration tool network super suite share remote microsoft csharp microsoft-usmt usmt-wrapper wrapper usmt-gui utility free

supergrate's Introduction

Super Grate is a tool part of the Super Suite that can perform remote execution of Microsoft's USMT (User State Migration Tool) on any domain joined PC, or local execution on any non-joined PC.

Features:

  • Configurable

    • Easy to tweak, easy to configure. Make Super Grate work for you by changing one of the many configurable settings!
  • Works Remotely

    • Are all your computers joined to an Active Directory domain? Super Grate will be able to perform Migrations & Backups over the network!
  • Non Disruptive

    • Tired of working around users' schedules? With Super Grate, the user will not even notice their profile is being Migrated or Backed up!
  • Unified

    • Super Grate can also be installed to a network share drive allowing all Super Grate users to experience the same settings and Backup Store.
  • Compatible

    • Enjoy Super Grate on most flavors of "Windows" from Windows 7 to Windows 11.
  • Portable

    • Install Super Grate directly to an external hard drive or thumb drive to take it with you on the go!
  • Complete

    • Nothing is left behind with Super Grate. Files, Media, Contacts, Emails, Windows Settings, Program Data & Internet Settings are all accounted for.
  • Free!

    • Super Grate along with other Super Suite utilities will always be free to download and use!

supergrate's People

Contributors

krisdb2009 avatar manschk3rl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

supergrate's Issues

Another Typo

this.helpProvider.SetHelpString(this.tbDestinationComputer, "Enter the source computer hostname. This is where the user profiles will be migra" +

This line is in reference to the Destination Computer Text Box, the help message on the above line should say "Destination" not "Source"

Documentation Missing Info

There should be more info in the documents on how to delete a profile from a remote computer and from the store.

Context Menu Bug

Describe the bug
Context menu not updating start button based on current filled in values.

Screenshots

image

1.3.0.0 - To Do List.

  • Re-evaluate why size calculating takes so long compared to the "System Properties" -> "User Profiles" window.
  • Polish up context icons (highlight icon on hover).
  • Finish comments / documentation.
  • Evaluate when to show a progress in the progress bar or a marquee.
  • Add IP address checking, localhost, and 127.0.0.1 to this method: Misc.cs
  • Make save / save log in general run async.
  • Only write everything to the store after the user is uploaded (staging folder?)
  • Get
    image from registry.

Typo in Classes/USMT.cs

Lines 35 and 39 both read if(DetectedArch == Misc.OSArchitecture.X64), meaning that USMTPath will not be set if the machine is 32-bit.

Error on list.

image

Weird error happens when trying to list users with size column sometimes.

Auto Download Failure Leaves Residue

Super Grate should clean up after a failed download so it can try again next time, currently it creates the USMT folder and quits, but that fools Super Grate into thinking it actually downloaded next time it runs.

Resize issue.

Resizing after moving divider causes elements to disappear into the void.
Annotation 2019-06-28 192711

Create an agent for calculating profile size.

Is your feature request related to a problem? Please describe.
Calculating user profile size over a network connection takes ages.

Describe the solution you'd like
Create an agent that is pushed to the remote machine, calculate the profile locally, then retrieve the results.

Describe alternatives you've considered
Multi threading the calculation process, but may be hard to do.

Replace List Box with List View

Replace the List Box with a List View with the following columns:

Source Computer:

  • User Name
  • Last Logon
  • Domain

Store:

  • User Name
  • Source Computer
  • Time Stamp
  • Domain

Detect Chip Architecture

When running SuperGrate with 32-bit against a 64-bit system, an error is given "32-bit process on a 64-bit system is not supported". Please add feature to detect if 32-bit of 64-bit version of USMT is being used.

Full-migrations not working correctly.

Describe the bug
A source to destination "in one step" migration is not working right.

To Reproduce
Enter Source & Destination, click "List Source", select a user, click "Start".

Expected behavior
A migration of the user from source to destination.

Screenshots
image

Logs

[SUCCESS]<9:35:41 PM> USMT Finished.
[INFO]<9:35:44 PM> Uploading user state to the Store...
[SUCCESS]<9:35:45 PM> User state successfully uploaded.
[INFO]<9:35:45 PM> Removing USMT from: BA-DYLANPC...
[SUCCESS]<9:35:45 PM> USMT removed successfully.
[INFO]<9:35:45 PM> Reading OS Architecture...
[INFO]<9:35:45 PM> OS Architecture is: 64-bit.
[INFO]<9:35:45 PM> Uploading USMT to: BA-DYLANPC
[SUCCESS]<9:35:45 PM> USMT uploaded successfully.
[INFO]<9:35:45 PM> Applying user state: 'BELOWAVERAGE\kevin' on 'BA-DYLANPC'...
[INFO]<9:35:45 PM> Downloading user state to: BA-DYLANPC...
[ERROR]<9:35:45 PM> Could not find file '.\STORE\S-1-5-21-823193273-4233245511-2126334244-1149\data'.
[VERBOSE]<9:35:45 PM> ERROR
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileInfo.get_Length()
   at SuperGrate.FileOperations.CopyFile(String Source, String Destination) in C:\Users\dylan\source\repos\SuperGrate\SuperGrate\Classes\FileOperations.cs:line 17
   at SuperGrate.USMT.<>c__DisplayClass16_0.<DownloadFromStore>b__0() in C:\Users\dylan\source\repos\SuperGrate\SuperGrate\Classes\USMT.cs:line 247
[ERROR]<9:35:45 PM> Failed to download state data to: BA-DYLANPC.
[ERROR]<9:35:45 PM> Failed to get SID from store ID: S-1-5-21-823193273-4233245511-2126334244-1149
[INFO]<9:35:45 PM> Removing USMT from: BA-DYLANPC...
[SUCCESS]<9:35:45 PM> USMT removed successfully.
[INFO]<9:35:45 PM> Done.

Additional context
Super Grate is looking for the stored user by SID, instead of by "Store GUID".

Provide Option to change where USMT will build the MIG file

Add the following logic:

  • If Super Grate's store is local ".\STORE"
  • AND if Super Grate's running scanstate on the local machine
  • Build the MIG file directly to the .\STORE and skip the copy stuff: Also running USMT from the local .\USMT folder instead of copying it as well.

Remote Delete Bug

Describe the bug
After deleting remote account, super grate for some reason doesn't list the users after deleting.

To Reproduce

  1. List source of any computer.
  2. Delete profile off remote computer.

Logs

[INFO]<8:26:27 PM> Deleting 'S-1-5-21-823193273-4233245511-2126334244-24848' from virtual...
[VERBOSE]<8:26:28 PM> Waiting for SuperGratePD to finish...
[INFO]<8:26:31 PM> Removing Daemon...
[SUCCESS]<8:26:31 PM> Done.
[INFO]<8:26:31 PM> Getting list of users on: virtual...
[INFO]<8:26:32 PM> Listing users was canceled.

Add parameter to LoadState.exe

Add the /lac parameter to the LoadState.exe step by default in the XML. This parameter allows profiles to be created if they don't exist.

Crash if listing empty store.

Describe the bug
SG Crashes if listing empty store.

To Reproduce
Open fresh Super Grate install. Click on "List Store"

Logs

[INFO]<10:11:15 PM> Generating SuperGrate.xml...
[SUCCESS]<10:11:15 PM> Saved.
[SUCCESS]<10:11:15 PM> Config loaded!
[SUCCESS]<10:11:15 PM> Welcome to prerelease - Super Grate! v1.3.0.0
[INFO]<10:11:15 PM> Enter some information to get started!
[INFO]<10:11:17 PM> Listing users from store: .\STORE...
[ERROR]<10:11:17 PM> Could not find a part of the path 'C:\Users\dylan\Desktop\STORE'.
[VERBOSE]<10:11:17 PM> ERROR
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
   at System.IO.DirectoryInfo.InternalGetDirectories(String searchPattern, SearchOption searchOption)
   at SuperGrate.Misc.<>c.<<GetUsersFromStore>b__11_0>d.MoveNext()
[ERROR]<10:11:17 PM> Failed to list users from store.
[ERROR]<10:11:17 PM> 
-----------FATAL ERROR-----------

[ERROR]<10:11:17 PM> Object reference not set to an instance of an object.

[ERROR]<10:11:17 PM> 
--------------TRACE--------------

[ERROR]<10:11:17 PM>    at SuperGrate.UserList.ULControl.SetRows(ListView Owner, UserRows Rows, ULColumnType SortColumn, ULSortDirection SortDirection)
   at SuperGrate.Main.<BtnListStore_Click>d__26.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

IP Address: Not Resolving

Describe the bug
If an IP address is placed in the "Source Computer" or "Destination Computer"
Super Grate doesn't resolve the computer name for the Store.

Screenshots

image

Incorrect architecture detection.

Describe the bug
The function Misc::GetRemoteArch uses WMI's Win32_OperatingSystem class to detect computer's architecture.
Unfortunately the OSArchitecture property can be localized (https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-operatingsystem), leading to unexpected values being returned.

To Reproduce
Run SuperGrate on a localized version of Windows (I've tested on a French installation of Windows Server 2008 R2).
Select some accounts, click on start.
Watch the migration fails (it won't be able to find USMT path due to unhandled architecture string, ie: USMT::USMTPath returns null).

Expected behavior
Account migration starting.

Logs

Reading OS Architecture...
OS Architecture is: 64 bits.
Uploading USMT to: Server1
Could not find the USMT folder at: .
Downloading USMT (64 bits) from the web...
Removing USMT folder due to failure...
La valeur ne peut pas être null.
Nom du paramètre : path
Error uploading USMT to: Server1
Reading OS Architecture...
OS Architecture is: 64 bits.
Uploading USMT to: Server2
Could not find the USMT folder at: .
Downloading USMT (64 bits) from the web...
Removing USMT folder due to failure...
La valeur ne peut pas être null.
Nom du paramètre : path
Error uploading USMT to: Server2
Done.

Edit : USMT won't work on Windows Server anyway but the bug is still valid.

Non Domain Remote Support

All users fail SID lookup if remote computer is on a different domain or if the running machine is not joined to a domain, but the target is.

image

Source Computer User Delete

Describe the bug
Deleting a user fails when trying to list.

To Reproduce
Delete a user from a remote source.

Logs

[INFO]<9:14:14 AM> Sending Profile Delete Daemon...
[INFO]<9:14:14 AM> Deleting 'CP-PC-VM1\Administrator' from cp-pc-vm1...
[VERBOSE]<9:14:14 AM> Waiting for SuperGratePD to finish...
[INFO]<9:14:18 AM> Removing Daemon...
[SUCCESS]<9:14:18 AM> Done.
[INFO]<9:14:18 AM> Getting list of users on: cp-pc-vm1...
[INFO]<9:14:18 AM> Listing users was canceled.
[ERROR]<9:14:18 AM> 
-----------FATAL ERROR-----------

[ERROR]<9:14:18 AM> Object reference not set to an instance of an object.

[ERROR]<9:14:18 AM> 
--------------TRACE--------------

[ERROR]<9:14:18 AM>    at SuperGrate.UserList.ULControl.SetRows(ListView Owner, UserRows Rows, ULColumnType SortColumn, ULSortDirection SortDirection)
   at SuperGrate.Main.<BtnListSource_Click>d__25.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Todo

  • listUsers box view modes option.
  • Icons on dialog windows.
  • Fix size calculator.
  • Right click menu in listUsers.
  • Disable settings menu when running.
  • Move Misc.MainMenuSetState to Win32Styles.cs
  • Get column sorting to work.
  • Display error if "sid" file is missing when trying to restore from store.
  • Change the user-list icons in the store depending on weather or not a profile was ever restored.
  • Add confirmation to delete users!

WMI Issues

If there is a WMI issue, this error may appear, the fix is below. Can this possibly be run automagically?

image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.