2012-02-07 43 views
0

我正在写一个Windows客户端应用程序,我希望有一个全球唯一标识符不是由我的应用程序生成的(我不想生成GUID并将其保存在本地)。
此外 - 每个应用程序为每个Windows用户分别安装。Windows登录用户唯一ID

我没有问题uniquely identify the machine,但我不确定唯一标识用户。我可以使用logged in user's SID(安全标识符),但我不确定SID的寿命是多少。

每个用户的SID是不变的?或者它可能会改变每个会话?

关于如何唯一标识具有永久ID的用户的任何想法?

(我想要一个预先存在的标识符,所以我可以检测到返回的用户) 应通过Win7支持Windows XP。

谢谢,

+0

不是存储在文件ACL的硬盘上的令牌的SID?它应该最好不要改变太频繁,然后... – PlasmaHH 2012-02-07 15:01:51

+0

@PlasmaHH - 我不想改变SID,我只是想确保它是不变的,不会改变永远 – 2012-02-07 15:04:17

+0

我想你想识别*用户帐户*,而不是*用户*。用户是人类,没有SID将唯一标识一个人。多人可以使用同一个帐户登录,并且一个人可以登录多个帐户。 SID不会帮助您检测到这一点,而且您是否在意检测该问题还不清楚。只需清楚你是否在追踪人员或账户。 – 2012-02-07 15:28:18

回答

2

给定用户的SID是不变的,不会在会话之间改变。

但是,对于域帐户,同一用户在多台机器上具有相同的SID。

+0

谢谢!这就是我想知道的。所以只是为了确保我正确理解你 - 在特定的机器上,每个用户的SID是不变的。你可以用MSDN文章或其他东西来备份该语句吗? – 2012-02-07 15:09:34

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/ms721625.aspx#_security_security_identifier_gly – 2012-02-07 15:20:26

+0

Thanks @RogerLipscombe! – 2012-02-07 15:34:24