作为不同的用户打开过程

时间:2009-12-04 22:54:24

标签: c delphi winapi

我希望在本地计算机上获得所选用户的权限。我知道如何从当前用户那里获取它们,所以我的问题是如何像其他用户一样打开一个进程。

我目前正在寻找有关CreateProcessAsUser()

的更多信息

感谢

2 个答案:

答案 0 :(得分:2)

你不应该为了获得他的特权而创建一个不同的用户。要获得用户权限,您需要一个iudentity令牌。要以用户身份启动进程,您需要一个模拟令牌。 Idenity令牌的安全风险非常低,另一方面冒充令牌是非常严肃的业务。至少,您需要知道用户的密码才能模拟(或具有支持impesonation的上下文,如SSPI交换安全上下文)。

使用LookupAccountName获取SID,LsaOpenPolicyLsaEnumerateAccountRights

答案 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帐户我执行以下操作   步骤(来自服务应用程序):

     
      
  1. 使用WTSGetActiveConsoleSessionId
  2. 获取活动控制台SessionId   
  3. 由于我需要在系统帐户下启动应用程序,我   从那以后使用来自Winlogon的令牌   Winlogon在系统下运行   帐户。所以我获得了进程ID   Winlogon并复制令牌。
  4.   
  5. 然后我确保将startupinfo参数lpDesktop发送到   winsta0 \默认因为我需要启动   我的过程在那里。
  6.   
  7. 然后我将CreateProcessAsUser与Winlogon的重复令牌一起使用   将我的流程启动到会话1中。
  8.   
  9. 就是这样。我完成了。
  10.