¿Hay alguna forma de conectar los valores en HKEY_USERS con el nombre de usuario actual?
Vi algunas preguntas similares, pero la mayoría (si no todas) habla sobre el código C#, y mi necesidad está en VBScript.Obteniendo el nombre de usuario de los valores HKEY_USERS
Respuesta
Si nos fijamos en cualquiera de las siguientes teclas:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
Puede encontrar una lista de los SID allí con varios valores, incluidos, en sus "caminos de origen", que incluye sus nombres de usuario.
No estoy seguro de qué tan confiable es esto y no recomendaría jugar con esto a menos que esté realmente seguro de lo que está haciendo.
Es posible consultar esta información en WMI. El siguiente comando generará una tabla con una fila para cada usuario junto con el SID para cada usuario.
wmic useraccount get name,sid
También puede exportar esta información a CSV:
wmic useraccount get name,sid /format:csv > output.csv
He utilizado este en Vista y 7. Para más información ver WMIC - Take Command-line Control over WMI.
Desafortunadamente, los SID que consigo no coinciden con los valores en HKEY_USERS en Windows 7 x64. –
Es posible que un SID legítimo esté aparentemente ausente porque la colmena de ese usuario en particular no se carga en ese momento.'Runas/profile/user: desireduser somearbitrarycommand' lo cargará. – amonroejj
hecho, por un poco de programación creativa,
Enum las Llaves en HKEY_USERS para esas teclas numéricas divertidos ...
Enum las llaves en HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \
y encontrará los mismos números .... Ahora en esas llaves mirar el valor de la secuencia: ProfileImageP ath = "SomeValue" donde los valores son o bien:
"% SystemRoot% \ system32 \ config \ systemprofile" ... no está interesado en este ... ya que no es un camino directorio ...
% SystemDrive% \ Documents and Settings \ LocalService - "Servicios locales" % SystemDrive% \ Documents and Settings \ NetworkService "SERVICIO DE RED"
o
% SystemDrive% \ Documents and Settings \ nombre_usuario, lo que se traduce directamente a los valores de "NOMBRE DE USUARIO" en la mayoría de los sistemas no alterados, es decir. donde el usuario no ha cambiado su nombre de usuario después de unas semanas o ha modificado las rutas de forma explícita ...
abierto Reg HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \
hacer un bucle para obtener todas las subclaves
las subclaves está interesado con son los que comenzó con [ S-1-5-21-] que significa usuario (vea el nombre de la clave [ProfileImagePath] siempre se inician con una ruta c: \ Users)
Aquellos que comiencen por [S-1-5-21-12] son todos usuarios locales
Aquellos que comiencen por [S-1-5-21-13] son todos usuarios de la red [si se unieron a la red de dominio] que hayan iniciado sesión previamente en la máquina.
3 contiene un error y no aconseja. [ProfileImagePath] NO TIENE que comenzar con una ruta c: \ Usuarios ... Consulte https://www.google.com/#hl=en&tbo=d&output=search&sclient=psy-ab&q=move+windows+7+ usuario + directorio; Además, como en cualquier otro comentario sobre este hilo, y mencionado por @spade, si el usuario/administrador ha cambiado el nombre de usuario y la creación y el inicio de sesión de la cuenta posterior, el nombre del directorio del perfil ya no coincidirá con el nombre de usuario (http://support.microsoft.com)/kb/2454362) – user66001
for /f "tokens=8 delims=\" %a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist" ^| find "UsrClass.dat"') do echo %a
Es posible que desee utilizar 'etiquetas 'markup" tags "para formatear este ejemplo de código :) – summea
Puede utilizar el comando del equipo PSGetSid SysInternals de Microsoft.
Descargar URL: http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx
Uso:
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.
Ejemplo:
psgetsid S-1-5-21-583907252-682003330-839522115-63941
NB:
- Cuando el usuario es un dominio/AD (LDAP) user , ejecutando esto en cualquier comput er en el dominio debería dar los mismos resultados.
- Cuando el usuario es local en la máquina, el comando debe ejecutarse en esa máquina, o debe especificar la computadora a través del parámetro opcional.
actualización
Si utiliza PowerShell, lo siguiente puede ser útil para resolver cualquier usuario de AD enumeran:
#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}}
También puede refinar el SID filtrar aún más a solamente retire esos SID que se resolverán en una cuenta AD si lo desea; más en la estructura SID aquí: https://technet.microsoft.com/en-us/library/cc962011.aspx
Mediante la búsqueda de mi ID de usuario en el registro, me encontré
HKEY_CURRENT_USER\Volatile Environment\Username
- 1. C# asp.net obteniendo nombre de usuario
- 2. Autenticación de Windows - Obteniendo el nombre de usuario actual
- 3. ¿Cómo se asignan las subclaves HKEY_USERS y los nombres de usuario de Windows?
- 4. Obteniendo nombre de usuario de autenticación básica en php
- 5. Obteniendo valores de los campos de texto con UIAutomation
- 6. ¿Cómo puedo encontrar programáticamente la clave de registro HKEY_USERS de un usuario usando powershell?
- 7. OpenCV: Obteniendo el total de los valores Mat
- 8. Actualizar los valores de la tabla de otra tabla con el mismo nombre de usuario
- 9. Obteniendo el nombre de la ventana activa
- 10. Obteniendo el nombre de usuario/contraseña del usuario conectado en Windows
- 11. jquery obteniendo todos los valores desplegables
- 12. Obteniendo el nombre mangled del nombre demandado
- 13. obteniendo el nombre completo de un ensamblaje
- 14. FOSUserBundle: nombre de usuario vs nombre de usuario canónico
- 15. Obteniendo HttpActionExecutedContext Valores de resultado
- 16. Obteniendo el nombre de una DLL desde el dll
- 17. AChartEngine, obteniendo los valores de las parcelas al hacer clic
- 18. Pase los valores de la página al control del usuario
- 19. Obteniendo valores de argumento de MethodCallExpression
- 20. Hibernate, obteniendo valores duplicados
- 21. Obteniendo el nombre de una subclase dentro de una superclase
- 22. Obteniendo el nombre de clase actual incluyendo el paquete
- 23. Obteniendo más atributos de CAS que simplemente identificación de usuario
- 24. Obteniendo el nombre de una clase de coffeescript?
- 25. Obteniendo múltiples valores clave de Redis
- 26. Obteniendo el nombre de color a través de Hex Value?
- 27. Obteniendo el nombre del script en Powershell
- 28. obteniendo un nombre de mensaje de Windows
- 29. ¿Cómo obtengo el nombre del usuario actual de Windows en formato de nombre de usuario @ dominio?
- 30. Obteniendo valores de datarow en una cadena?
Exactamente lo que necesitaba. ¡Gracias! – modz0r
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ hivelist parece ser el usuario que ha iniciado sesión en cada sistema (Xp - 7) que he examinado ... Y no consideraría HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ \ ProfileImagePath una forma confiable de determinar el nombre de usuario (Ver http://support.microsoft.com/kb/2454362). –
user66001