-1

我有一个 Qt/C++ 应用程序。应用程序需要注册一个 npapi 浏览器插件,该插件使用以下命令注册:

regsvr32 npmyplugin.dll

我可以使用 QProcess 甚至 system() 函数,但需要注册服务管理权限。在这种情况下如何启动服务。

4

1 回答 1

2

一旦开始该过程,就无法提升您的权限。但是,您可以在启动新进程时要求更高的权限。当您在 Windows 上时,只需在以下字段中使用ShellExecuteEx和设置:runaslpVerbSHELLEXECUTEINFO

    SHELLEXECUTEINFO shExInfo = {0};
    shExInfo.cbSize = sizeof(shExInfo);
    shExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    shExInfo.hwnd = 0;
    shExInfo.lpVerb = _T("runas");                 // Operation to perform
    shExInfo.lpFile = _T("regsvr32.exe");          // Application to start    
    shExInfo.lpParameters = _T("npmyplugin.dll");  // Additional parameters
    shExInfo.lpDirectory = 0;
    shExInfo.nShow = SW_SHOW;
    shExInfo.hInstApp = 0;  

    ShellExecuteEx(&shExInfo);
    return 0;

要在 Qt 应用程序中使用它,只需#include <windows.h>确保为 Windows SDK 正确设置了 include 和 lib 变量。

要使用 Windows SDK 设置 Qt 创建者,请检查以下问题:如何将 Windows SDK 与 Qt Creator 一起使用

原始代码来自这个问题中接受的答案: 如何运行需要提升和等待的子进程?

于 2013-09-18T18:49:35.323 回答