0

我的程序当前有这条线

状态:= DllRegisterServer;

在 WIN7 且用户不是管理员的机器上失败。

是否可以通过提升权限以编程方式调用 DllRegisterServer?

或者有什么方法可以提示提升权限,然后使用该信息执行 DllRegisterServer。

4

2 回答 2

3

提升只能在流程创建时执行。因此,您需要一个新进程来执行此代码。您的主要选择:

  1. 调用 ShellExecute 传递动词 runas 和一个 exe 文件。这将提升新流程。
  2. 将 requireAdministrator 清单添加到可执行文件并运行它。
  3. 使用进程外 COM 服务器并将其启动提升。

在这些选项中,数字 1 对您来说可能更简单。对于选项 1,您不需要单独的可执行文件。您可以传递命令行参数,这将导致对注册函数的调用。

于 2013-02-04T18:52:17.043 回答
1

没有办法以编程方式提升程序的权限,只有用户才能这样做。您可以指示操作系统您的程序需要提升的权限,例如,通过包含清单

如何将清单 <requestedPrivileges> 信息添加到 delphi 项目中

您还可以决定允许您的程序在没有提升权限的情况下运行(通过不包括清单),然后禁用所有需要提升权限的操作,或者在非提升的进程(非常类似于任务管理器使用“显示所有用户的进程”按钮:

Delphi:如何以提升的状态启动应用程序并等待它终止?

于 2013-02-04T18:50:58.733 回答