2010-04-28 35 views
0

我有一种情况,我需要存储指向Active Directory 用户帐户的全局唯一标识符。我倾向于Guid,因为它比Sid更容易存储。System.DirectoryServices.AccountManagement.Principal是否有空GUID?

根据MSDN entry,如果ContextType设置为“机器”,属性(它是可空的)将始终返回null。我不需要担心这一点,因为我们的ContextType将始终设置为“域”。

我的问题是,如果ContextType是“域”,该属性是否会返回null?换句话说,一个AD DS店里的账户总是有Guid?

+0

我已经对我们的Active Directory做了一些测试,并且从我所看到的每个对象都有一个Guid。我不知道的是,如果情况总是如此,由于我们有一些配置,如果它取决于您的AD版本等等。 – Josh 2010-05-07 20:49:12

回答

0

我没有明确的答案,但我编写了一个简单的控制台应用程序,它贯穿了我们所有的Active Directory用户帐户。

对我们来说,至少答案是否定的。校长将始终有一个GUID,只要ContextType是“域”

1

我看到这个回答一个相关的问题后,得到的答复是肯定的:每个对象将有一个GUID,这是在

概述

http://msdn.microsoft.com/en-us/library/ms675579.aspx

其中有关schemaIDGuid的文档说:“在创建classSchema对象时,如果未指定Active Directory服务器,则会生成此值如果创建新类,请为每个类生成自己的GUID,以便所有您的扩展的安装使用相同的schemaIDGUID来引用该类。“

所以....如果你不创建一个,AD会为你做。