我上一次与域服务器通话是什么时候?
时间:2020-03-05 18:53:35 来源:igfitidea点击:
即使应用程序离线运行,我的应用程序也如何从Windows获取有效的"上次连接域"时间戳?
背景:
我正在编写在整个公司的多个客户端计算机上运行的应用程序。所有这些客户端计算机都在我公司实现的AD域之一上。如果客户端计算机在一段时间内未与AD通信,则此应用程序需要采取某些措施。
例如,运行此应用程序的计算机被盗。之后4周后,该应用程序拒绝运行,因为它检测到计算机4周未与其AD域进行通信。
请注意,它不得与用户帐户绑定,因为该应用程序可能作为本地服务帐户运行。这是我感兴趣的计算机域关系。
我已经考虑并拒绝使用WinNT:// <domain> / <machine> $,user
,因为它在脱机时不起作用。而且,任何" LDAP:// ..."查询在离线时均无法使用。
我还考虑并拒绝每天安排此查询并将时间戳存储在注册表或者文件中。该解决方案需要太多的设置和编码。除了此值外,必须仅由Windows在本地存储。
解决方案
回答
恕我直言,我不认为客户端计算机会存储上次与AD通信的时间戳。此信息存储在活动目录本身中(即,在DC上)
用户登录到Windows计算机后,凭据将被缓存。如果该计算机与网络断开连接,则凭据将永久保存。我们可以使用组策略关闭此功能,以便计算机不缓存任何凭据。
回答
我不认为此值存储在客户端计算机上。它存储在Active Directory中,我们可以使用Dsquery工具获取不活动计算机的列表。
最好的选择是让程序进行简单的测试,例如连接到DC,然后存储该操作的时间戳。