如何映射HKEY_USERS子项和Windows用户名?

时间:2009-06-22 20:35:46

标签: windows registry

我认为HKEY_USERS正下方的关键名称应该是在某个时间登录此计算机的用户名。但在我的机器上出现的是:

S-1-5-18
S-1-5-19
S-1-5-20
S-1-5-21-NNNNNNNNN-NNNNNNNNN-NNNNNNNNNN-NNNNN
S-1-5-21-NNNNNNNNN-NNNNNNNNN-NNNNNNNNNN-NNNNN_Classes

我希望能够确定哪个子树对应哪个用户。我怎么能这样做?

编辑:我需要的是从SID获取用户名。我想检查已经登录的每个用户的配置,我需要知道他们的名字。例如,在上面的注册表中,我需要能够,基于字符串“S-1-5-21-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN somebodyelse。

7 个答案:

答案 0 :(得分:9)

可以从WMI查询此信息。以下命令将输出一个表,其中包含每个用户的行以及每个用户的SID。

wmic useraccount get name,sid

您也可以将此信息导出为CSV:

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

我在Vista和7上使用过它(根据2008 R2上的评论)。有关详细信息,请参阅WMIC - Take Command-line Control over WMI

答案 1 :(得分:2)

我相信这些数字是用户的安全ID(SID)。您可以使用SysInternals获取用户的SID:

http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx

答案 2 :(得分:2)

对于PowerShell,这很快:

gwmi win32_userprofile | ft localpath, sid
Ashley McGlone 微软PFE http://aka.ms/GoateePFE

答案 3 :(得分:1)

HKLM \ System \ CurrentControlSet \ Control \ hivelist将显示从哪里安装配置单元。虽然不是直接映射,但通常挂载点在路径中具有用户名。

我确信有比这更好的答案......

答案 4 :(得分:0)

手动执行此操作(无需额外工具)时,最简单的方法是打开该密钥的权限。拥有完全权限的唯一用户是密钥的所有者。

从程序中,您需要一种方法将SID转换为帐户名称。在C#(或PowerShell)中,请查看SecurityIdentifier和NtAccount类。

答案 5 :(得分:0)

在C#中似乎有一个答案,将用户名转换为SID http://community.bartdesmet.net/blogs/bart/archive/2006/09/08/4394.aspx,但它仅适用于本地PC。

对于AD,我将其转换为:

using System;
using System.DirectoryServices;
using System.Security.Principal;

class Program {
    static void Main(string[] args) {
        string path = "LDAP://" + args[0];
        DirectoryEntry root = new DirectoryEntry(path, args[1], null, AuthenticationTypes.Secure);
        string sid = new SecurityIdentifier((byte[])root.Properties["objectSID"][0], 0).Value;
        Console.WriteLine(sid);
    }
}

用法是:programname.exe DOMAIN用户名

e.g。 programname.exe somecompany.com preet_sangha

答案 6 :(得分:0)

请使用powershell

$mydocuments = [Environment]::GetFolderPath("mydocuments")
gwmi win32_userprofile | ft localpath, sid, status -AutoSize | Out-File $mydocuments\userprofiles.txt