Untitled
unknown
powershell
3 years ago
2.4 kB
5
Indexable
# Wyrażenie regularne dla wzoru numeru SSID
# Wyszukuje numery SSID wszystkich użytkowników windowsa z kwantyfikatorami liczbowymi więcej niż jeden dla
# końcowego ciągu znaków użytego symbolem $
$PatternSID = 'S-1-5-21-\d+-\d+\-\d+\-\d+$'
# Pobiera nazwę usera, SID i lokację pliku ntuser.dat dla wszystkich userów
# ntuser.dat zawiera m.in to co jest w regedicie.
# Stała nie zmieniamy
# Ładuje nazwy profili
$ProfileList = gp 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\*' | Where-Object {$_.PSChildName -match $PatternSID} |
Select @{name="SID";expression={$_.PSChildName}},
@{name="UserHive";expression={"$($_.ProfileImagePath)\ntuser.dat"}},
@{name="Username";expression={$_.ProfileImagePath -replace '^(.*[\\\/])', ''}}
# Pobiera wszystkich użytkowników i SID'y w kluczu HKEY_USERS (pobiera wszystkich z pliku ntuser, którzy są obecnie zalogowani do systemu
$LoadedHives = gci Registry::HKEY_USERS | ? {$_.PSChildname -match $PatternSID} | Select @{name="SID";expression={$_.PSChildName}}
# Pobiera wszystkich userów tylko teraz tych, którzy nie są zalogowani
$UnloadedHives = Compare-Object $ProfileList.SID $LoadedHives.SID | Select @{name="SID";expression={$_.InputObject}}, UserHive, Username
# Montuje 'dysk' dla HKEY_USERS. Tylko on musi być montowany przed uruchomienie, inne np HKCU, HKM i inne nie potrzebuje tego
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
# Tworzy pętle foreach które przechodzi przez każdego usera
Foreach ($item in $ProfileList) {
# Ładuje Ntuser.dat
IF ($item.SID -in $UnloadedHives.SID) {
reg load HKU\$($Item.SID) $($Item.UserHive) | Out-Null
}
# Tu modyfikujemy klucz rejestru w zaleznosci co chcemy zrobic
#####################################################################
New-ItemProperty -Path "HKU:\$($Item.SID)\Control Panel\Desktop" -Name "MouseWheelRouting" -PropertyType DWord -Value 0 -Force | Write-Output
#####################################################################
# Odmontowywuje ntuser.dat
IF ($item.SID -in $UnloadedHives.SID) {
### Garbage collection and closing of ntuser.dat ###
[gc]::Collect()
reg unload HKU\$($Item.SID) | Out-Null
}
}Editor is loading...