Existe-t-il un moyen de connecter les valeurs sous HKEY_USERS au nom d'utilisateur actuel?
J'ai vu des questions similaires, mais la plupart (sinon toutes) parlent de code C #, et mon besoin est en VBScript.
Si vous regardez l'une des clés suivantes:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
Vous pouvez y trouver une liste des SID avec diverses valeurs, y compris l'endroit où se trouvent leurs "chemins d'accès", qui incluent leurs noms d'utilisateur.
Je ne sais pas à quel point c'est fiable et je ne recommanderais pas de jouer avec ça à moins d'être vraiment sûr de ce que vous faites.
Il est possible d'interroger ces informations à partir de WMI . La commande suivante va générer une table avec une ligne pour chaque utilisateur avec le SID pour chaque utilisateur.
wmic useraccount get name,sid
Vous pouvez également exporter ces informations au format CSV:
wmic useraccount get name,sid /format:csv > output.csv
Je l'ai utilisé sous Vista et 7. Pour plus d'informations, voir WMIC - Prendre le contrôle en ligne de commande sur WMI .
Ouvrez Reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \
faire une boucle pour obtenir toutes les sous-clés
les sous-clés qui vous intéressent sont celles qui ont été démarrées avec [S-1-5-21-], ce qui signifie utilisateur (voir le nom de la clé [ProfileImagePath], elles sont toujours démarrées avec un chemin c:\Users)
Ceux commençant par [S-1-5-21-12] sont tous des utilisateurs locaux
Ceux commençant par [S-1-5-21-13] sont tous des utilisateurs du réseau [ s'ils sont connectés à un réseau dominé ] qui ont déjà été enregistrés sur la machine.
En recherchant mon identifiant dans le registre, j'ai trouvé
HKEY_CURRENT_USER\Volatile Environment\Username
Vous pouvez utiliser la commande PSGetSid de l'équipe SysInternals de Microsoft.
URL de téléchargement: http://technet.Microsoft.com/en-gb/sysinternals/bb897417.aspx
Usage:
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.
Exemple:
psgetsid S-1-5-21-583907252-682003330-839522115-63941
NB:
Mettre à jour
Si vous utilisez PowerShell, les éléments suivants peuvent être utiles pour résoudre les utilisateurs AD répertoriés dans la liste:
#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}}
Vous pouvez également affiner davantage le filtre SID pour ne récupérer que les SID qui seront résolus en un compte AD si vous le souhaitez; Pour plus d'informations sur la structure SID, cliquez ici: https://technet.Microsoft.com/en-us/library/cc962011.aspx
for /f "tokens=8 delims=\" %a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist" ^| find "UsrClass.dat"') do echo %a
Dans le HKEY_USERS\oneyouwanttoknow\
, vous pouvez regarder \Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
et il révélera leurs chemins de profil. c:\users\whothisis\Desktop
, etc.
Fait, par un peu de programmation créative,
Énumérer les clés dans HKEY_USERS pour ces touches numériques amusantes ...
Énumérer les clés dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \
et vous retrouverez les mêmes nombres .... Maintenant, dans ces clés, examinez la valeur String: ProfileImagePath = "SomeValue" où les valeurs sont:
"% systemroot%\system32\config\systemprofile" ... pas intéressé par celui-ci ... car ce n'est pas un chemin d'accès directory ...
% SystemDrive%\Documents and Settings\LocalService - "Services locaux" % SystemDrive%\Documents and Settings\NetworkService "SERVICE RÉSEAU"
ou
% SystemDrive%\Documents and Settings\USER_NAME, qui se traduit directement par les valeurs "USERNAME" dans la plupart des systèmes non falsifiés, c'est-à-dire. où l'utilisateur n'a pas changé son nom d'utilisateur après quelques semaines ou modifié explicitement les chemins d'accès ...