-->

从提升程序启动具有用户权限的程序(Start program with user rights fr

2019-10-18 06:14发布

我有需要提升权限(这有点像一个自定义安装程序)的应用程序。 在此应用中,我使用的ShellExecute()来显示PDF文件。 看来,如果ADOBE READER开始用相同的权限调用应用程序的。 我想如果Adobe Reader然而,使用标准用户权限启动,而不是升高。

有一些方法可以让我做到这一点? (这将是德尔福,但这个问题的语言可能并不重要)。

Answer 1:

有没有真正简单的办法很遗憾做到这一点。

你能做到这一点的方法之一是使用任务计划程序-您使用ITaskService接口安排任务立即运行,可以在当前登录用户的非凸起的凭据。



Answer 2:

你正在努力实现不能很容易实现,并且不支持。 然而,有可能使用黑客的一点点。 亚伦Margosis写了一篇文章描述了一种技术。

引述相关的部分,则需要执行这些步骤:

  1. 在当前的令牌启用SeIncreaseQuotaPrivilege
  2. 获取一个HWND表示桌面外壳(GetShellWindow)
  3. 获取与该窗口相关联的进程的进程ID(PID)(GetWindowThreadProcessId)
  4. 打开处理(OpenProcess)
  5. 从这一过程获取的访问令牌(OpenProcessToken)
  6. 做一个主令牌与令牌(DuplicateTokenEx)
  7. 与主令牌启动新进程(CreateProcessWithTokenW)

本文包含的下载链接一些演示C ++源,从中应该足够简单翻译德尔福。



文章来源: Start program with user rights from within a elevated program