代码之家  ›  专栏  ›  技术社区  ›  Remus Rigo

以不同用户身份打开进程

  •  0
  • Remus Rigo  · 技术社区  · 15 年前

    我想在本地计算机上获得所选用户的特权。我知道如何从当前用户获取它们,所以我的问题是如何以不同的用户身份打开流程。

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

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   Remus Rusanu    15 年前

    你不应该创建一个进程作为一个不同的用户只是为了获得他的特权。要获取用户权限,您需要一个IUdentity令牌。要以用户身份启动进程,您需要一个模拟令牌。Identity令牌的安全风险非常低,而模拟令牌则是非常严重的业务。至少,您需要知道用户的密码才能进行模拟(或者拥有一个支持不精确的上下文,比如SSPI交换安全上下文)。

    使用 LookupAccountName 获取SID, LsaOpenPolicy LsaEnumerateAccountRights .

        2
  •  1
  •   Mick    15 年前

    请查看此链接,了解如何从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获取活动控制台会话ID
    2. 因为我需要在系统帐户下启动应用程序,所以我 使用Winlogon的令牌,因为 Winlogon在系统下运行 帐户。所以我得到了 Winlogon并复制令牌。
    3. 然后确保将startupinfo参数lpdesktop发送到 Winsta0\默认,因为我需要启动 我在那里的过程。
    4. 然后我将CreateProcessAsuser与Winlogon的重复令牌一起使用到 将我的流程启动到会话1中。
    5. 这就是全部。我完了。