私は別のプロセスをラップする(Win32コンソール)プログラムを書いています。それは、次の例のようにパラメータを受け取り:argvを単一の文字列に変換する
runas.exe user notepad foo.txt
すなわち:runas
はuser
を解析した後、残りのパラメータを渡して、メモ帳を実行します。
私の問題は、argv
が個々のパラメータに分解されていますが、CreateProcessAsUser
には1つのlpszCommandLine
パラメータが必要です。
このコマンドラインを構築するのはおそらく、argv
をスペースでつなぐだけの簡単な方法ではありません。すべてのポインタ?
これは単なる例です。私の最初の引数は実際にはユーザー名ではなく、その中にスペースが入っている可能性があります。これにより、手動での結果を解析する手間がかかります。
同様に、argv
の素朴な連結は、元の引数が引用され、その中にスペースが含まれている場合に対処する必要があるため、機能しません。
私は大丈夫だと思う「スペースと一緒に戻ってARGVに参加する」と言うだろう。何が違うと思いますか? –
Benoitは、 'runas.exe user notepad" foo bat.txt "'では動作しないためです。 – avakar
スペースを含むargsを引用することを忘れないでください。 – Hasturkun