对于客户端/服务器应用程序,我需要集中存储通常进入用户配置文件目录的部分配置信息。
客户端应用程序将首先使用将带有 GUID 的文件或注册表项写入当前配置文件。此 GUID 随后将用作服务器上配置数据库中的 key 。
现在我想知道 Windows 用户配置文件是否已经具有我可以使用的唯一标识符而不是生成我自己的 GUID。
用户名无效,因为用户可能有多个配置文件。将它与计算机名称结合使用是行不通的,因为可能存在漫游配置文件。
更新:
我刚刚查看了同一域中两台计算机上 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
中的 SID。未启用漫游,因此我的用户帐户在每台计算机上都有一个单独的配置文件。列出的两个配置文件具有相同的 SID。这意味着我必须不断生成自己的 GUID。
最佳答案
Windows 用户和组使用安全标识符 (SID)。
A security identifier (SID) is a unique value of variable length that is used to identify a security principal or security group in Windows operating systems.
有一个list of predefined SIDs Windows具有内置功能。其他 SID 是通过将当前计算机的(随机生成的 96 位)SID 与递增的数字组合生成的。
在计算机上拥有帐户的用户的 SID 存储在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
下的注册表中
示例 SID(取自 The Microsoft policy concerning disk duplication of Windows XP installations ):
以下示例显示四个本地用户帐户的 SID。请注意,随着新帐户的添加,只有最后四位数字会增加。
- S-1-5-21-191058668-193157475-1542849698-500 管理员
- S-1-5-21-191058668-193157475-1542849698-1000 用户 1
- S-1-5-21-191058668-193157475-1542849698-1001 用户 2
- S-1-5-21-191058668-193157475-1542849698-1002 用户 3
由于 SID 的生成方式,它们应该是唯一的。由于它们是 Windows 配置文件系统的一部分,因此漫游配置文件在每个系统上都应具有相同的 SID。
关于windows - Windows 中用户配置文件的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787419/