• ベストアンサー

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 です。 どうか宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.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);

ystk
質問者

お礼

がーん そうですか、command.comが悪かったなんて それじゃ、ShellExecuteでは、Win95系で環境変数の設定を行うのはムリっぽいですね。(泣) わかりましたちょっと他の方法を探ってみます。 バッチファイルを使うくらいしか思いつかないのですが・・・。 もし、他にPathを効かせてコマンドを実行する方法がありましたらアドバイスをいただけると嬉しいです。 お忙しいところ、わざわざ試していただき、本当にありがとうございました。

その他の回答 (1)

  • danner
  • ベストアンサー率72% (8/11)
回答No.1

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; 実際には確かめていませんがどうでしょうか?

ystk
質問者

補足

早速の回答ありがとうございます。 さっそく試してみたのですが、やはりうまくいきません。 説明はとてもよくわかりました。 これでいけると思ったんですけど・・・。 なにか根本的に間違ってるのでしょうか? 一応 C:\Dataというフォルダが無いとかいうオチはありません。

関連するQ&A