2010-05-27 18 views

Odpowiedz

51

Jeśli spojrzeć na jeden z następujących klawiszy:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

można znaleźć listę SID tam z różnymi wartościami, w tym w ich domu „ścieżek”, który obejmuje ich nazw użytkowników.

Nie jestem pewien, jak bardzo jest to niezawodne i nie polecałabym się z tym bawić, chyba że jesteś naprawdę pewien, co robisz.

+0

Dokładnie to, czego potrzebowałem. Dzięki! – modz0r

+9

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ hivelist wydaje się być tylko aktualnie zalogowanym użytkownikiem w każdym systemie (Xp - 7), na który patrzyłem ... I nie brałbym pod uwagę HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ \ ProfileImagePath niezawodny sposób określania nazwy użytkownika (Zobacz http://support.microsoft.com/kb/2454362). – user66001

20

Możliwe jest zapytanie do tej informacji z WMI. Poniższe polecenie wyświetli tabelę z wierszem dla każdego użytkownika wraz z identyfikatorem SID dla każdego użytkownika.

wmic useraccount get name,sid 

Można także eksportować te informacje do pliku CSV:

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

Użyłem tego na Vista i 7. Aby uzyskać więcej informacji, zobacz WMIC - Take Command-line Control over WMI.

+0

Niestety, identyfikatory SID, które otrzymuję, nie pasują do wartości pod HKEY_USERS na Windows 7 x64. –

+0

Możliwe, że legitymowany identyfikator SID jest pozornie nieobecny, ponieważ gałąź tego użytkownika nie jest w tym momencie załadowana.'Runas/profile/user: desireduser somearbitrarycommand' załaduje go. – amonroejj

0

Sporządzono go, by trochę kreatywnego programowania

  1. ENUM klucze w HKEY_USERS dla tych zabawnych klawiszy numerycznych ...

  2. ENUM klucze w HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \

a znajdziesz te same numery .... teraz w tych kluczy spojrzeć na wartości String: ProfileImageP ath = "SomeValue", gdzie wartości są albo:

"% systemroot% \ system32 \ config \ systemprofile" ... nie interesuje ten ... jak jej nie ścieżki katalogu ...

% SystemDrive% \ Documents and Settings \ LocalService - "Usługi lokalne" % SystemDrive% \ Documents and Settings \ sieciowa "Usługa sieciowa"

lub

% SystemDrive% \ Documents and Settings \ nazwa_użytkownika, co przekłada bezpośrednio do wartości "USERNAME" w większości nieuszkodzonych systemów, tj. gdzie użytkownik nie zmienił nazwy użytkownika po kilku tygodniach lub wyraźnie zmienił ścieżki ...

+2

""% systemroot% \ system32 \ config \ systemprofile "... ponieważ nie jest to ścieżka do katalogu ..." jest niepoprawne. Spróbuj c & p w oknie dialogowym uruchamiania. – user66001

+0

(Potwierdzone działanie na WinXP + 7) – user66001

11
  1. Otwarte Reg HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \

  2. zrobić pętlę, aby uzyskać wszystkie podklucze

  3. podklucze jesteście zainteresowani są te kroki z [ S-1-5-21-] co oznacza użytkownika (patrz nazwa klucza [ProfileImagePath], zawsze zaczyna się od ścieżki c: \ Users)

  4. Osoby rozpoczynające się od [S-1-5-21-12] są wszyscy użytkownicy lokalni

  5. Osoby rozpoczynające się od [S-1-5-21-13] są użytkownikami sieci [, jeśli są przyłączeni do sieci Domained], które wcześniej były zalogowane na komputerze.

+4

3 zawiera błąd, a nie mądre porady. [ProfileImagePath] nie musi zaczynać się od ścieżki c: \ Users ... Zobacz https://www.google.com/#hl=en&tbo=d&output=search&sclient=psy-ab&q=move+windows+7+ użytkownik + katalog; Ponadto, jak w innym miejscu, skomentował ten wątek i wspomniano o @spade, jeśli użytkownik/administrator zmienił nazwę użytkownika, tworząc konto i logując się, nazwa katalogu profilu nie będzie już pasować do nazwy użytkownika (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

Możesz użyć znaczników 'code'" do sformatowania tego przykładu kodu :) – summea

2

Można użyć PSGetSid polecenia z zespołu Microsoft SysInternals.

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

Zastosowanie:

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. 

przykład:

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

Uwaga:

  • W przypadku, gdy użytkownik jest domena/AD (LDAP) użytkownik , uruchamiając to na dowolnym komputerze er w domenie powinien dawać takie same wyniki.
  • W przypadku, gdy użytkownik jest lokalny dla urządzenia, polecenie należy uruchomić na tym komputerze lub należy określić komputer za pomocą parametru opcjonalnego.

Aktualizacja

Jeśli używasz PowerShell, następujące mogą być przydatne do rozwiązywania wszelkich użytkowników AD wymienione:

#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}} 

Można również udoskonalenie SID filtrować dalej tylko wycofaj te identyfikatory SID, które zostaną rozwiązane na konto AD, jeśli chcesz; Więcej na temat struktury SID tutaj: https://technet.microsoft.com/en-us/library/cc962011.aspx

2

szukając mojego identyfikatora użytkownika w rejestrze, znalazłem

HKEY_CURRENT_USER\Volatile Environment\Username 
Powiązane problemy