Подтвердить что ты не робот

Получение имени пользователя из значений HKEY_USERS

Есть ли способ подключения между значениями под HKEY_USERS и фактическим именем пользователя?
Я видел некоторые подобные вопросы, но большинство (если не все) говорит о коде С#, и моя потребность в VBScript.

4b9b3361

Ответ 1

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

Вы можете найти список идентификаторов безопасности с различными значениями, в том числе, где их "домашние пути", которые включают их имена пользователей.

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

Ответ 2

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

wmic useraccount get name,sid

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

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

Я использовал это в Vista и 7. Для получения дополнительной информации см. WMIC - Возьмите командный контроль над WMI.

Ответ 3

  • Откройте Reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

  • сделать цикл, чтобы получить все подразделы

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

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

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

Ответ 4

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

HKEY_CURRENT_USER\Volatile Environment\Username

Ответ 5

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

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

Примечание:

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

Обновление

Если вы используете 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 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

Ответ 6

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

Ответ 7

Сделал это, немного креативным программированием,

  • Перечислите ключи в HKEY_USERS для этих смешных цифровых клавиш...

  • Перечислить ключи в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

и вы найдете те же номера... Теперь в этих ключах обратите внимание на значение String: ProfileImagePath = "SomeValue", где значения:

"% systemroot%\system32\config\systemprofile"... не интересуется этим... как его не путь к каталогу...

% SystemDrive%\Documents and Settings\LocalService - "Локальные службы" % SystemDrive%\Documents and Settings\NetworkService "NETWORK SERVICE"

или

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

Ответ 8

В HKEY_USERS\oneyouwanttoknow\ вы можете посмотреть \Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders и он покажет их пути к профилю. c:\users\whothisis\Desktop и т.д.