我已被分配到修改WinForms应用程序以基本检查登录的用户是否属于特定的域。 这是我想出迄今:是否有更好(更简单)的方法来获取特定域名的SID?
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字符串,但我不知道如何“正确”,这将是。
请注意,在Windows的本地化版本中,管理员的名称可能不同。 例如,在俄语Windows中,没有“管理员”用户,而是“Администратор”,因此硬编码管理员的名字不是一个好主意。 – user2513541