我需要模拟特定 Windows 服务的 LogOn 用户帐户。
我已经能够使用 WMI 获取用户名(遗憾的是,LogOn 用户身份似乎没有使用任何与常规 Windows 服务相关的 .NET 类公开)。但是,只有用户名(可以是本地或域帐户)我如何获得该 Windows 身份的令牌?
可以提供令牌的LogonUser WinAPI调用需要密码作为参数,这显然是不可用的。用户输入不是一个选项。
任何见解将不胜感激。
最后做了以下事情:
希望这对需要模拟运行服务的用户帐户的任何其他人有用。
虽然这完全没有被微软记录下来,因为他们想假装服务登录在登录时不需要明文密码,但实际上它需要并且 services.exe 使用正确的密码调用 LogonUser。
密码被隐藏在注册表深处的某个地方,只有SYSTEM可以访问并加密启动,但SYSTEM帐户可以获得机器密钥并解密密码。
(已失效的来源)http://www.computersecurityarticles.info/security/decrypting-lsa-secrets/
(新来源)https://gist.github.com/jborean93/58bba8236fac313e3d4b3970b8213cb6
请注意,因为这没有记录,所以你不应该使用它。