windows - Windows 中用户配置文件的唯一标识符

标签 windows language-agnostic network-programming registry uniqueidentifier

对于客户端/服务器应用程序,我需要集中存储通常进入用户配置文件目录的部分配置信息。

客户端应用程序将首先使用将带有 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/

相关文章:

windows - 将 cloudbase-init msi 包安装到已安装的 vhd 文件上

c++ - panic : Failed to load dbcapi. dll:

c++ - IDC 是什么意思?

language-agnostic - 多项式的天真评估如何不利于准确性?

c# - 如何(真正)取消 Windows Phone 上的 ConnectAsync 请求?

regex - grep 正则表达式搜索数字序列

language-agnostic - 逐帧访问视频

algorithm - 生成一个不太全局唯一的标识符

java - 如何在有限的时间内(超时)从 DatagramSocket 中读取数据 block ?

c++ - '访问冲突', 'bad allocation' : POCO NTPClient request C++