我已被分配修改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);

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

我已经考虑过使用一个硬编码的SID字符串,但是我不知道那将是多么“正确”。

最佳答案

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

09-16 00:54