【问题标题】:Elevated privileges with specific user/password on Delphi在 Delphi 上使用特定用户/密码提升权限
【发布时间】:2014-05-05 18:15:30
【问题描述】:

我正在开发一个应用程序来运行我的同事必须执行的一些默认步骤,但我是唯一拥有管理员密码且我的应用程序需要管理员权限的人,但我无法每次都为他们登录...

虽然我创建了一个函数来自我提升我的程序或使用管理员凭据启动它,但是如果不将用户和密码作为参数传递给第三方应用程序,我就找不到任何东西,这可以很容易地跟踪。

有人知道怎么处理吗?

【问题讨论】:

  • 从非管理员帐户运行具有管理员权限的应用程序将始终提示输入管理凭据。大多数需要管理员权限的应用程序不会接受来自命令行的凭据;他们只是假设应用程序是由管理员运行的,然后让 Windows 来处理。
  • 构建一个处理管理步骤的服务和一个触发该服务的客户端。这就是 Windows Update 和 Firefox Updater(以及更多)的工作方式

标签: windows delphi uac credentials privileges


【解决方案1】:

您可以:

  1. 使用LogonUser() 登录所需的用户帐户,然后使用ImpersonateLoggedOnUser() 让调用线程在执行所需任务之前模拟该用户,然后在完成后使用RevertToSelf() 停止模拟。

  2. 将管理任务移至单独的进程,然后使用LogonUser()CreateProcessAsUser(),或者CreateProcessWithLogonW(),在需要时使用用户凭据启动该进程。

【讨论】:

  • 我不确定它如何与第二个选项一起使用,但 Impersonate 效果很好。谢谢
猜你喜欢
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2014-04-26
  • 2012-03-14
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多