Estou tentando salvar todos os sids abaixo:
"HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\ProfileList\"
para algum diretório e estou tentando controlar todos os meus SIDs de backup existentes ou não no perfil. se não for, devo importar meus perfis salvos.
Eu tentei com script em lote que eu escrevi, mas meu script fazendo isso quando um login de usuário e não é uma boa maneira de fazer isso!
Estou compartilhando para você entender o que eu quero fazer.
(o script 1 deve ser executado com a conta de usuário sem privilégios de administrador.)
@echo on
IF EXIST D:\Users\ (goto dvar) else goto quit
:dvar
echo dvar
setlocal enabledelayedexpansion
echo %username%>D:\Users\username.txt
for /f "tokens=2 delims= " %%i in ('whoami /user /fo table /nh') do set usersid=%%i
echo %usersid%>>D:\Users\username.txt
echo %userprofile%>>D:\Users\username.txt
IF EXIST D:\Users\%username% (goto GetUserinf) else goto quit
:GetUserinf
for /f "tokens=1 delims=." %%a in ('echo %userprofile%') do set newpath=%%a
IF %newpath%==%userprofile% (goto quit) else goto run
:run
Dprofile2.bat
:quit
exit
(o script 2 deve ser executado com privilégios de administrador).
@echo on
(
set /p user=
set /p usersid=
set /p oldpath=
)<C:\Windows\Temp\username.txt
for /f "tokens=1 delims=." %%a in ('echo %oldpath%') do set newpath=%%a
echo OLD path %oldpath% --- NEW path=%newpath%
IF EXIST %newpath% (goto oldexist) else goto quit
:oldexist
:choice
set /P c=For continue "Y", For quit "N" [Y/N]?
if /I "%c%" EQU "Y" goto :reboot
if /I "%c%" EQU "N" goto :quit
:reboot
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%usersid%" /v "ProfileImagePath" /t REG_EXPAND_SZ /d "%newpath%" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "deleteprofile" /t REG_SZ /d "C:\Windows\system32\cmd.exe /q /c rmdir /s /q %oldpath%"
echo Windows Rebooting.
::shutdown -r -t 0
:quit
exit
Eu encontrei um Shell Script, mas eu não conheço o shell VBS.
Eu acho que com scripts de shell isso é realmente um trabalho fácil.
Você pode me ajudar por favor? Eu fiquei tão duro ...
$objUser = New-Object System.Security.Principal.NTAccount(Read-Host -Prompt "Enter Username")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
#$strSID.Value
Rename-Item -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\$($strSID.Value)" -NewName "$($strSID.Value).old"