Qt/C++ アプリケーションがあります。アプリケーションは、次のコマンドを使用して登録される npapi ブラウザー プラグインを登録する必要があります。
regsvr32 npmyplugin.dll
QProcess や system() 関数も使用できますが、サービスを登録するには管理者権限が必要です。この場合、どうすればサービスを開始できますか。
プロセスを開始すると、権限を昇格させる方法はありません。ただし、新しいプロセスを開始するときに、より高い特権を要求できます。Windows を使用しているので、次のフィールドを使用ShellExecuteEx
して設定runas
するだけです。lpVerb
SHELLEXECUTEINFO
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>
include 変数と lib 変数が Windows SDK に対して適切に設定されていることを確認してください。
Windows SDK で Qt クリエーターをセットアップするには、次の質問を確認してください: Qt Creator で Windows SDK を使用するにはどうすればよいですか?
元のコードは、この質問で受け入れられた回答から来ています: 昇格と待機が必要な子プロセスを実行するにはどうすればよいですか?