1

ShellExecuteEx を使用してアプリケーションを起動する必要がある qt でアプリケーションに取り組んでいます。バッチ ファイルを実行していますが、2 つの引数を渡す必要があります。最初の引数は単なる文字ですが、2 番目の引数はスペースを含む場合と含まない場合があるパスです。私が何をしても、それはスペースを逃れません。エスケープされた引用符を含めると、実際には呼び出し全体が壊れているようです。問題はルナにあると思います。それがどのように機能するかは100%わかりませんが、呼び出しをコピーしてエスカレートされたシェルで実行しているようです。このプロセスは、追加された引用符で壊れているようです。

これが私のShellExecuteコードです。引数を 1 つ渡すように簡略化しましたが、それでも壊れます。

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"runas";
ShExecInfo.lpFile = L"test.bat";
ShExecInfo.lpParameters = L"\"test param\"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

完全を期すために、ここに test.bat があります

@echo off
pause

私が得るシェル出力は次のとおりです。

'J:\Repositories\Qt' is not recognized as an internal or external command, operable program or batch file.

スクリプトへのパスは

J:\Repositories\Qt Project\debug\test.bat

元のパスを台無しにするため、最初のコマンドが失敗することがわかります。

このような runas コマンドで引数に引用符を含める方法はありますか?

4

1 に答える 1