-1

Qt/C++ アプリケーションがあります。アプリケーションは、次のコマンドを使用して登録される npapi ブラウザー プラグインを登録する必要があります。

regsvr32 npmyplugin.dll

QProcess や system() 関数も使用できますが、サービスを登録するには管理者権限が必要です。この場合、どうすればサービスを開始できますか。

4

1 に答える 1

2

プロセスを開始すると、権限を昇格させる方法はありません。ただし、新しいプロセスを開始するときに、より高い特権を要求できます。Windows を使用しているので、次のフィールドを使用ShellExecuteExして設定runasするだけです。lpVerbSHELLEXECUTEINFO

    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 を使用するにはどうすればよいですか?

元のコードは、この質問で受け入れられた回答から来ています: 昇格と待機が必要な子プロセスを実行するにはどうすればよいですか?

于 2013-09-18T18:49:35.323 に答える