是否有更好(更简单)的方法来获取特定域的SID?

jov*_*nas 5 c# .net-4.0 active-directory

我被指派修改WinForms应用程序,基本上检查登录用户是否属于特定域.这是我到目前为止所提出的:

byte[] domainSid;

var directoryContext =
    new DirectoryContext(DirectoryContextType.Domain, "domain.se");

using (var domain = Domain.GetDomain(directoryContext))
using (var directoryEntry = domain.GetDirectoryEntry())
    domainSid = (byte[])directoryEntry.Properties["objectSid"].Value;

var sid = new SecurityIdentifier(domainSid, 0);
bool validUser = UserPrincipal.Current.Sid.IsEqualDomainSid(sid);
Run Code Online (Sandbox Code Playgroud)

有没有更好/更简单的方法来做到这一点?对我来说,似乎可以使用PrincipalContext或System.Security.Principal中的其他类以某种方式访问​​domainSid.

我考虑过使用硬编码的SID字符串,但我不知道它是多么"正确".

Bri*_*ond 5

对我来说,您正在做的事情似乎是最好的选择。硬编码字符串绝对不是一个好主意。