プロが教えるわが家の防犯対策術!

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 です。

どうか宜しくお願いします。

A 回答 (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);
    • good
    • 0
この回答へのお礼

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

お忙しいところ、わざわざ試していただき、本当にありがとうございました。

お礼日時:2002/05/22 08:45

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というフォルダが無いとかいうオチはありません。

補足日時:2002/05/20 18:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!