Untitled

mail@pastecode.io avatar
unknown
powershell
a year ago
2.4 kB
1
Indexable
Never
# 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
    }
}