作为LocalSystem运行的C#程序如何临时模拟另一个用户的登录身份?粗略地说,我有一个Windows服务,希望以LocalSystem的身份运行,但有时会模拟用户XYZ(使用Windows Integrated Security连接到数据库时)。
最重要的是:是否有一种方法可以在不知道其他用户密码的情况下进行?
注意:如果必须输入密码,那么有建议的策略可以安全地存储密码(c#和/或vbscript)。
这是可能的,尽管它需要您编写大量代码。请参阅NtCreateToken和CreateToken。尽管因为在NT AUTHORITY \ SYSTEM下运行,所以这不是问题,但您需要SeCreateTokenPrivilege。然后,您可以使用创建的令牌模拟线程内部。