- ベストアンサー
CreateProcessでの環境変数の設定の仕方
PATHを設定してCommand.comを実行したいのですが、 CreateProcessでの環境変数の設定の仕方がわかりません char* env = "PATH=c:\\data"; CreateProcess(NULL,"command.com /k path ", NULL, NULL, FALSE, 0, env, NULL, &si, &pi); このようにしてみたところDos窓が起動しますが、 表示されるPATHはデフォルトのままです。 環境は VC++6.0 MFC です。 どうか宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Windows XP で cmd.exe に変更して実行しましたが、PATH=c:\data と表示されます。 OS に関係なく、command.com は特殊なプログラムなのかもしれないですね。 -------------------------------- char *env = "PATH=c:\\data\0"; CreateProcess(NULL, "cmd.exe /k path ", NULL, NULL, FALSE, 0, env, NULL, &si, &pi);
その他の回答 (1)
- danner
- ベストアンサー率72% (8/11)
danner です。 MSDNを調べると 「環境ブロックの構成は次のようになります。 name1=value1<NULL>name2=value2<NULL>……nameN=valueN<NULL><NULL>」 となっています。 したがって、環境設定変数の最後はダブルヌルにしないといけないのでは? >char* env="PATH=c:\\data"; ではなく、例えば char env[1024]; strcpy(env, "PATH=c:\\data"); env[strlen(env)+1]=NULL; 実際には確かめていませんがどうでしょうか?
補足
早速の回答ありがとうございます。 さっそく試してみたのですが、やはりうまくいきません。 説明はとてもよくわかりました。 これでいけると思ったんですけど・・・。 なにか根本的に間違ってるのでしょうか? 一応 C:\Dataというフォルダが無いとかいうオチはありません。
お礼
がーん そうですか、command.comが悪かったなんて それじゃ、ShellExecuteでは、Win95系で環境変数の設定を行うのはムリっぽいですね。(泣) わかりましたちょっと他の方法を探ってみます。 バッチファイルを使うくらいしか思いつかないのですが・・・。 もし、他にPathを効かせてコマンドを実行する方法がありましたらアドバイスをいただけると嬉しいです。 お忙しいところ、わざわざ試していただき、本当にありがとうございました。