我需要使用本机 Windows 进程来确认 Windows 计算机与链接到特定 Active Directory 对象的设备是否相同。我打算通过在设备的注册表中查找 AD SID 来执行此操作(多个来源告诉我它存储在“HKLM\SECURITY\SAM\Domains\Account\V”的最后 12 个字节中),但在我自己的计算机上似乎并非如此(这两个值相差很大)。我可以查看什么本地在计算机上与 AD 计算机对象进行比较并说“是的!就是这样!”?
答案1
其中的最后 12 个字节V
是当地的机器 SID,它是该机器上本地用户 SID 的基础。
计算机的 SID活动目录计算机帐户的默认值为HKLM\SECURITY\Policy\PolMachineAccountS
。您可能会发现查看姊妹键 更容易PolMachineAccountR
,它仅以小端序保存 RID(计算机 SID 的最后一个组件)。无论哪种方式,您都可以将本地注册表与从 Active Directory 获得的 SID 进行比较,例如,通过查看 Active DirectoryobjectSid
用户和计算机中计算机属性的“属性编辑器”选项卡中的属性。
为了更加确定,您还可以比较密码上次设置时间。Active Directory 在属性中记录计算机上次更改其计算机帐户密码的时间pwdLastSet
。计算机将该时间记录在 LSA 机密中,因此您需要运行此 PowerShell 命令(基于这篇博文) 作为系统:
[datetime]::FromFileTime([bitconverter]::ToInt64((gi 'HKLM:\SECURITY\Policy\Secrets\$MACHINE.ACC\CupdTime\').GetValue($null), 0))
请注意,由于时区差异,小时可能会有差异,而由于时钟偏差,秒可能会有差异。