具有提升权限的DllRegisterServer

时间:2013-02-04 18:42:14

标签: delphi

我的程序当前行

状态:= DllRegisterServer;

在WIN7的计算机上失败,而用户不是管理员。

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

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

2 个答案:

答案 0 :(得分:3)

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

  1. 调用ShellExecute传递动词运行和exe文件。这将提升新流程。
  2. 将requireAdministrator清单添加到可执行文件并运行该文件。
  3. 使用进程外COM服务器并将其启动升级。
  4. 在这些选项中,1号可能对您来说更简单。对于选项1,您不需要单独的可执行文件。您可以传递将导致对注册函数的调用的命令行参数。

答案 1 :(得分:1)

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

How to add manifest <requestedPrivileges> info into delphi project

您还可以决定允许程序在没有提升权限的情况下运行(不包括清单),但随后禁用所有需要提升权限的操作或重新启动程序,要求在调用选项时提升权限一个非提升的过程(非常像任务管理器使用“显示所有用户的过程”按钮:

Delphi: How to start application with elevated status and wait for it to terminate?