我正在尝试确定用户从远程计算机建立的最后一个域连接,无论该计算机当前是否已连接到该域。
我能得到的最接近的是使用与此类似的System.DirectoryServices.ActiveDirectory和System.DirectoryServices.AccountManagement命名空间:
Domain d = Domain.GetComputerDomain();
PrincipalContext c = new PrincipalContext(ContextType.Domain, d.Name);
UserPrincipal uc = UserPrincipal.FindByIdentity(c, "johndoe");
然后使用UserPrincipal的LastLogon属性。
这个工作正常,只要运行我的应用程序的机器连接到域。如果不是,Domain.GetComputerDomain()返回null,我运气不好(即使我将域名硬编码到PrincipalContext构造函数,它会在未连接到域时抛出异常)。是否有其他AD属性或注册表项在与我可以使用的服务器建立AD连接时本地存储在远程计算机上?
以下描述LSA Cache的链接似乎很有希望,但据我所知,没有任何关于缓存的域连接时间戳。
Determine User Active Directory Groups from Local Machine off Network