2010-05-27 7 views

ответ

51

Если посмотреть на одну из следующих клавиш:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

Вы можете найти список УЛМ там с различными значениями, в том числе, где их «дома путей», который включает в себя их имена пользователей.

Я не уверен, насколько это надёжно, и я бы не стал советоваться с этим, если вы не уверены, что делаете.

+0

Именно то, что мне было нужно. Благодаря! – modz0r

+9

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ hivelist кажется только зарегистрированным пользователем в каждой системе (Xp-7), на который я смотрел ... И я бы не рассматривал HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ \ ProfileImagePath - надежный способ определения имени пользователя (см. Http://support.microsoft.com/kb/2454362). – user66001

20

Можно запросить эту информацию от WMI. Следующая команда выводит таблицу со строкой для каждого пользователя вместе с SID для каждого пользователя.

wmic useraccount get name,sid 

Вы также можете экспортировать эту информацию в формате CSV:

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

Я использовал это на Vista, и 7. Для получения дополнительной информации см WMIC - Take Command-line Control over WMI.

+0

К сожалению, SID, которые я получаю, не соответствуют значениям под HKEY_USERS в Windows 7 x64. –

+0

Возможно, что законный SID выглядит, по-видимому, отсутствующим, потому что в тот момент улей этого конкретного пользователя не загружается.'Runas/profile/user: wishuser somearbitrarycommand' загрузит его. – amonroejj

0

Совершено это, по немного творческого программирования,

  1. Enum ключи в HKEY_USERS для этих ключей смешных номер ...

  2. Enum ключи в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \

и вы увидите одни и те же номера .... Теперь в этом клавише посмотреть на значении Строки: ProfileImageP ATH = "SomeValue", где значения либо:

"% SystemRoot% \ system32 \ Config \ systemprofile" ... не заинтересован в этом ... как его не путь в каталог ...

% SystemDrive% \ Documents и Settings \ LocalService - "Локальные услуги" % SystemDrive% \ Documents и Settings \ NETWORKSERVICE "NETWORK SERVICE"

или

% SystemDrive% \ Documents и Settings \ имя_пользователя, который переводит прямо к значениям «USERNAME» в большинстве несанкционированных систем, т.е. где пользователь не изменил свое имя пользователя через несколько недель или явно изменил пути ...

+2

""% systemroot% \ system32 \ config \ systemprofile "... как не путь к каталогу ..." неверен. Попробуйте c & p this в диалоговом окне run. – user66001

+0

(Подтвержденная работа над WinXP + 7) – user66001

11
  1. Открыть Reg HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \

  2. сделать петлю, чтобы получить все подразделы

  3. подразделы Вас интересует являются те, которые начали с [ S-1-5-21-], что означает пользователь (см. Имя ключа [ProfileImagePath], они всегда начинаются с пути c: \ Users)

  4. Те, кто начат с [S-1-5-21-12] все местные пользователи

  5. Все, начиная с [S-1-5-21-13], являются пользователями сети [, если они присоединены к Domain network], которые ранее были зарегистрированы на компьютере.

+4

3 содержит ошибку и не мудрый совет. [ProfileImagePath] НЕ ИМЕЕТ начать с пути c: \ Users ... Посмотрите https://www.google.com/#hl=ru&tbo=d&output=search&sclient=psy-ab&q=move+windows+7+ пользователь + каталог; Кроме того, как и в других местах, прокомментировал эту тему и упомянул @spade, если пользователь/администратор изменил имя пользователя и пароль для входа в учетную запись пользователя, имя каталога профиля больше не будет соответствовать имени пользователя (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

Вы можете использовать теги «code' markup» для форматирования этого примера кода :) – summea

2

Вы можете использовать команду PsGetSid из команды SysInternals Microsoft.

Скачать URL: http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx

Использование:

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. 

Пример:

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

NB:

  • Если пользователь является домен/AD (LDAP) пользователя , запуская это на любом вычислении er на домене должны давать одинаковые результаты.
  • Если пользователь является локальным для машины, команда должна быть запущена на этом компьютере, или вы должны указать компьютер через необязательный параметр.

Update

Если вы используете PowerShell, следующие могут быть полезны для решения любых пользователей AD в списке:

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

Вы также можете уточнить SID фильтра далее только отменить те SID, которые будут разрешены к учетной записи AD, если вы пожелаете; больше на структуру SID здесь: https://technet.microsoft.com/en-us/library/cc962011.aspx

2

, ища мой идентификатор пользователя в реестре, я нашел

HKEY_CURRENT_USER\Volatile Environment\Username 
Смежные вопросы