我希望在本地计算机上获得所选用户的权限。我知道如何从当前用户那里获取它们,所以我的问题是如何像其他用户一样打开一个进程。
我目前正在寻找有关CreateProcessAsUser()
的更多信息感谢
答案 0 :(得分:2)
你不应该为了获得他的特权而创建一个不同的用户。要获得用户权限,您需要一个iudentity令牌。要以用户身份启动进程,您需要一个模拟令牌。 Idenity令牌的安全风险非常低,另一方面冒充令牌是非常严肃的业务。至少,您需要知道用户的密码才能模拟(或具有支持impesonation的上下文,如SSPI交换安全上下文)。
使用LookupAccountName获取SID,LsaOpenPolicy和LsaEnumerateAccountRights。
答案 1 :(得分:1)
从Delphi中的服务检查此链接以了解如何执行此操作:Launch your application in Vista under the local system account without the UAC popup
To launch a process under the local system帐户我执行以下操作 步骤(来自服务应用程序):
- 使用WTSGetActiveConsoleSessionId
获取活动控制台SessionId- 由于我需要在系统帐户下启动应用程序,我 从那以后使用来自Winlogon的令牌 Winlogon在系统下运行 帐户。所以我获得了进程ID Winlogon并复制令牌。
- 然后我确保将startupinfo参数lpDesktop发送到 winsta0 \默认因为我需要启动 我的过程在那里。
- 然后我将CreateProcessAsUser与Winlogon的重复令牌一起使用 将我的流程启动到会话1中。
- 就是这样。我完成了。
醇>