2010-05-27 15 views

Antwort

51

Wenn Sie auf eine der folgenden Tasten aus:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

Sie können eine Liste der SIDs dort mit verschiedenen Werten finden, auch dann, wenn ihre „Heimat Pfade“, die ihre Benutzernamen enthält.

Ich bin mir nicht sicher, wie zuverlässig das ist, und ich würde nicht empfehlen, damit herumzualbern, außer du bist dir wirklich sicher, was du tust.

+0

Genau das, was ich brauchte. Vielen Dank! – modz0r

+9

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ hivelist scheint nur der aktuell angemeldete Benutzer auf jedem System (XP - 7) zu sein, das ich angeschaut habe ... Und ich würde HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ nicht berücksichtigen ProfileList \ \ ProfileImagePath eine zuverlässige Methode zur Bestimmung des Benutzernamens (siehe http://support.microsoft.com/kb/2454362). – user66001

20

Es ist möglich, diese Information von WMI abzufragen. Der folgende Befehl gibt eine Tabelle mit einer Zeile für jeden Benutzer zusammen mit der SID für jeden Benutzer aus.

wmic useraccount get name,sid 

Sie können diese Informationen auch in CSV exportieren:

wmic useraccount get name,sid /format:csv > output.csv 

ich dies auf Vista verwendet haben und 7. Weitere Informationen WMIC - Take Command-line Control over WMI sehen.

+0

Leider stimmen die SIDs nicht mit Werten unter HKEY_USERS unter Windows 7 x64 überein. –

+0

Es ist möglich, dass eine legitime SID scheinbar abwesend ist, weil die Struktur dieses bestimmten Benutzers gerade nicht geladen wird.'Runas/profile/user: selecteduser irgendein willkürlicher Befehl' wird es laden. – amonroejj

0

es getan, um ein wenig kreativen Programmierung,

  1. Enum die Schlüssel in HKEY_USERS für diese lustigen Zifferntasten ...

  2. Enum die Schlüssel in HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Profilelist \

und Sie werden die gleichen Zahlen .... Jetzt in diesen Schlüsseln Blick auf den String-Wert finden: ProfileImageP ath = "EinWert", wo die Werte sind entweder:

"% systemroot% \ system32 \ config \ Systemprofile" ... in dieser einen nicht interessiert ... als nicht ein Verzeichnispfad ...

% Systemdrive% \ Dokumente und Einstellungen \ Localservice - "Local Services" % Systemdrive% \ Dokumente und Einstellungen \ Networkservice "NETWORK SERVICE"

oder

% Systemdrive% \ Dokumente und Einstellungen \ Benutzername, die übersetzt direkt zu den "USERNAME" -Werten in den meisten nicht manipulierten Systemen, dh. wo der Benutzer seinen Benutzernamen nach ein paar Wochen nicht geändert hat oder die Pfade explizit geändert hat ...

+2

""% systemroot% \ system32 \ config \ systemprofile "... da es kein Verzeichnispfad ist ..." ist falsch. Versuchen Sie es mit c & p im Run-Dialog. – user66001

+0

(Bestätigt Arbeiten an WinXP + 7) – user66001

11
  1. Öffnen Reg HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Profilelist \

  2. eine Schleife bilden alle Subkeys

  3. die Unterschlüssel zu erhalten, sind Sie daran interessiert, mit mit denen begonnen [ S-1-5-21-] was Benutzer bedeutet (siehe Schlüsselname [ProfileImagePath] sie werden immer mit einem Pfad c: \ Benutzer gestartet)

  4. Diejenigen, die mit [S-1-5-21-12] beginnen sind alle lokalen Benutzer

  5. Diejenigen, die mit [S-1-5-21-13] beginnen, sind alle Netzwerkbenutzer [, die mit dem Domänennetzwerk verbunden sind], die zuvor auf dem Computer angemeldet waren.

+4

3 enthält einen Fehler, und nicht ratsam beraten. [ProfileImagePath] muss nicht mit einem Pfad beginnen c: \ Benutzer ... Sehen Sie sich https://www.google.com/#hl=de&tbo=d&output=search&sclient=psy-ab&q=move+windows+7+ an Benutzer + Verzeichnis; Wie auch an anderer Stelle zu diesem Thread kommentiert und von @spade erwähnt, wenn der Benutzer/Administrator die Benutzerbenutzernachricht für die Kontoerstellung und Anmeldung geändert hat, stimmt der Name des Profilverzeichnisses nicht mehr mit dem Benutzernamen überein (http://support.microsoft.com))/kb/2454362) – user66001

0
for /f "tokens=8 delims=\" %a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist" ^| find "UsrClass.dat"') do echo %a 
+0

Sie können 'code' Markup 'Tags verwenden, um dieses Codebeispiel zu formatieren :) – summea

2

Sie können den Befehl PsGetSid von Microsofts Sysinternals Team verwenden.

Download-URL: http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx

Verbrauch:

psgetsid [\\computer[,computer[,...] | @file] [-u username [-p password]]] [account|SID] 
-u Specifies optional user name for login to remote computer. 
-p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password. 
Account PsGetSid will report the SID for the specified user account rather than the computer. 
SID PsGetSid will report the account for the specified SID. 
Computer Direct PsGetSid to perform the command on the remote computer or computers specified. If you omit the computer name PsGetSid runs the command on the local system, and if you specify a wildcard (\\*), PsGetSid runs the command on all computers in the current domain. 
@file PsGetSid will execute the command on each of the computers listed in the file. 

Beispiel:

psgetsid S-1-5-21-583907252-682003330-839522115-63941 

NB:

  • Wenn der Benutzer eine Domäne/AD ist (LDAP) Benutzer , läuft dies auf jedem Computer Er auf der Domain sollte die gleichen Ergebnisse liefern.
  • Wenn der Benutzer lokal für die Maschine ist, sollte der Befehl entweder auf dieser Maschine ausgeführt werden oder Sie sollten den Computer über den optionalen Parameter angeben.

aktualisieren

Wenn Sie Powershell verwenden, können die folgenden für die Lösung alle AD-Benutzer aufgelistet nützlich sein:

#create a drive for HKEY USERS: 
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue 

#List all immediate subfolders 
#where they're a folder (not a key) 
#and they's an SID (i.e. exclude .DEFAULT and SID_Classes entries) 
#return the SID 
#and return the related AD entry (should one exist). 
Get-ChildItem -Path 'HKU:\' ` 
| ?{($_.PSIsContainer -eq $true) ` 
-and ($_.PSChildName -match '^S-[\d-]+$')} ` 
| select @{N='SID';E={$_.PSChildName}} ` 
, @{N='Name';E={Get-ADUser $_.PSChildName | select -expand Name}} 

Sie auch die SID nur weiter filtern verfeinern könnte Ziehen Sie diese SIDs zurück, die zu einem AD-Konto aufgelöst werden, wenn Sie dies wünschen; mehr auf der SID-Struktur hier: https://technet.microsoft.com/en-us/library/cc962011.aspx

2

von in der Registrierung für meine Benutzer-ID suchen, fand ich

HKEY_CURRENT_USER\Volatile Environment\Username 
Verwandte Themen