Registrywert suchen und Oberschlüssel löschen
Hallo werte Gemeinschaft,
leider bin ich nirgends im Internet fündig geworden um eine Lösung zu bekommen.
Ich hab folgendes Problem!
Ich möchte über einer Batch Datei einen Registrywert suchen und den Oberschlüssel des Wertes löschen.
Ich habe einen Registrywert:
Name: ProfileImagePath
Typ: REG_EXPAND_SZ
Daten: C:\Users\ hier steht der "wissende Nutzername"
es soll nun der "wissende Nutzername" in diesem Wert gefunden werden und der OBERSCHLÜSSEL soll gelöscht werden.
Dieser Oberschlüssel steht an folgender Stelle in der Reg!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Der Anfang des Oberschlüssels beginnt mit S-1-5-21
Kann mir jemand helfen dieses Problem zu lösen?
leider bin ich nirgends im Internet fündig geworden um eine Lösung zu bekommen.
Ich hab folgendes Problem!
Ich möchte über einer Batch Datei einen Registrywert suchen und den Oberschlüssel des Wertes löschen.
Ich habe einen Registrywert:
Name: ProfileImagePath
Typ: REG_EXPAND_SZ
Daten: C:\Users\ hier steht der "wissende Nutzername"
es soll nun der "wissende Nutzername" in diesem Wert gefunden werden und der OBERSCHLÜSSEL soll gelöscht werden.
Dieser Oberschlüssel steht an folgender Stelle in der Reg!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Der Anfang des Oberschlüssels beginnt mit S-1-5-21
Kann mir jemand helfen dieses Problem zu lösen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270392
Url: https://administrator.de/contentid/270392
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
kann es sein, dass es sich immernoch um dieses Thema handelt?
Die Definition von "wissender Nutzername" und "Oberschlüssel" ist mir nicht ganz klar.
Ich nehme mal an, Du versuchst folgendes:
Im Schlüssel ProfileList alle Unterschlüssel durchsuchen, bis Du den Nutzer (mal angenommen mmustermann) gefunden hast.
Dann den ganzen Profilschlüssel von mmustermann löschen.
Wenn es nach wie vor darum geht, Benutzerprofile zu löschen, hast Du schonmal über folgende Möglichkeit via Powershell nachgedacht?
Dieses Snippet sucht nach der SID des Users, dessen Profilpfad den Namen "\test-" am Ende enthält und entfernt dann Diese. (Inkl. Profil)
Ist eventuell eine etwas sauberere Variante, als einfach einen Reg-Schlüssel zu löschen, der Reste hinterlässt.
Sollte keine Powershell verfügbar sein, WMI kann auch von VBS und wmic (cmd) angesprochen werden.
Beste Grüße
Dominique
kann es sein, dass es sich immernoch um dieses Thema handelt?
Die Definition von "wissender Nutzername" und "Oberschlüssel" ist mir nicht ganz klar.
Ich nehme mal an, Du versuchst folgendes:
Im Schlüssel ProfileList alle Unterschlüssel durchsuchen, bis Du den Nutzer (mal angenommen mmustermann) gefunden hast.
Dann den ganzen Profilschlüssel von mmustermann löschen.
Wenn es nach wie vor darum geht, Benutzerprofile zu löschen, hast Du schonmal über folgende Möglichkeit via Powershell nachgedacht?
$UserSID = (Get-WmiObject Win32_UserProfile | Where {$_.LocalPath -like '*\test-*'}).SID
(gwmi -class Win32_UserProfile -filter "SID='$UserSID'").Delete()
Ist eventuell eine etwas sauberere Variante, als einfach einen Reg-Schlüssel zu löschen, der Reste hinterlässt.
Sollte keine Powershell verfügbar sein, WMI kann auch von VBS und wmic (cmd) angesprochen werden.
Beste Grüße
Dominique
Hallo zusammen,
und hier noch als Ergänzung zu Dominique's Variante, hier der Schnippsel um nur den entsprechenden RegistryKey zu löschen (ebenfalls mit Powershell):
oder auch
Das komplette Profil nach Dominques Variante zu entfernen ist natürlich zu bevorzugen. Das nur als mögliche Varianten für das Suchen und Entfernen in der Registry via Powershell.
Grüße Uwe
und hier noch als Ergänzung zu Dominique's Variante, hier der Schnippsel um nur den entsprechenden RegistryKey zu löschen (ebenfalls mit Powershell):
$username = "Meier"
gci "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | %{Get-ItemProperty $_.PSPath} | ?{$_.ProfileImagePath -like '\$username*'} | %{remove-item $_.PSPath -Force}
$username = "Meier"
$sid = (New-Object System.Security.Principal.NTAccount($username)).Translate([System.Security.Principal.SecurityIdentifier]).Value
Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid" | remove-item -Force
Grüße Uwe
Get SID of user 2 Sekunden Google ;)
Nur zum sauberen Entfernen mittels Batch bin ich leider überfragt. Ich hatte schonmal nach etwas ähnlichem gesucht.
Die Powershell ist hier doch meiner Meinung nach die schönste Lösung.
Usernamen ersetzen (am Besten in Variable ablegen) und gut ist's...
Und was Powershell angeht, finden sich mittlerweile mehr und mehr Foren, Fachliteratur und Support.
Einmal Google angeworfen, "gwmi delete sid" und schon sprudelt die Quelle vor lauter Antworten.
Ich habe gerade mal etwas länger nach Möglichkeiten gesucht, Memberfunktionen mittels WMIC auszuführen (hier z.B. SID.Delete()) und komme da auf keinen grünen Zweig.
Hoffentlich hat jemand anders eine Lösung parat. Wäre daran auch sehr interessiert.
Beste Grüße
Dominique
Nur zum sauberen Entfernen mittels Batch bin ich leider überfragt. Ich hatte schonmal nach etwas ähnlichem gesucht.
Die Powershell ist hier doch meiner Meinung nach die schönste Lösung.
Usernamen ersetzen (am Besten in Variable ablegen) und gut ist's...
Und was Powershell angeht, finden sich mittlerweile mehr und mehr Foren, Fachliteratur und Support.
Einmal Google angeworfen, "gwmi delete sid" und schon sprudelt die Quelle vor lauter Antworten.
Ich habe gerade mal etwas länger nach Möglichkeiten gesucht, Memberfunktionen mittels WMIC auszuführen (hier z.B. SID.Delete()) und komme da auf keinen grünen Zweig.
Hoffentlich hat jemand anders eine Lösung parat. Wäre daran auch sehr interessiert.
Beste Grüße
Dominique
Nur über WMIC hab ich keine so richtige Lösung gefunden.
wmic PATH WIN32_Userprofile where (LocalPath like '%\MaxMuster') delete /interactive:off
Grüße Uwe
p.s. zu Powershell kann ich dir nur raten dich unbedingt damit zu beschäftigen. Wird in Windows in naher Zukunft Batch ersetzen und ist ja schon seit Windows Vista nutzbar.
Ist ja annähernd dasselbe. Ich habe schonmal zu danken!
Habe mal etwas zusammengeschnipselt, was aus einem Usernamen via Registry eine SID machen sollte. Der Rest sollte von selbst kommen ;)
Ich hoffe, busteron sollten nun alle nötigen Infos offeriert worden sein.
Beste Grüße
Dominique
Habe mal etwas zusammengeschnipselt, was aus einem Usernamen via Registry eine SID machen sollte. Der Rest sollte von selbst kommen ;)
@echo off
for /f "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" ^| Find /i "S-1-5-21"') do (
for /f "tokens=2,* delims= " %%b in ('reg query "%%a" /v "ProfileImagePath"') do (
if %%c == C:\Users\mmustermann (echo %%~na)
)
)
Beste Grüße
Dominique