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

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;
実際には確かめていませんがどうでしょうか?
この回答への補足
早速の回答ありがとうございます。
さっそく試してみたのですが、やはりうまくいきません。
説明はとてもよくわかりました。
これでいけると思ったんですけど・・・。
なにか根本的に間違ってるのでしょうか?
一応
C:\Dataというフォルダが無いとかいうオチはありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stable diffusionのエラー
-
CTime.Formatが(NULL)に??
-
txtファイルを読み込んで表示関...
-
C言語の勉強しています。すみま...
-
【Excel VBA】10進数を2進数に...
-
UTF-8で5~6バイトになる文字コ...
-
sedコマンドで全ての2バイト文...
-
10Mバイトて文字数に すると何...
-
Rstudioによるテキストマイニン...
-
ESC/Pのテキスト印字の制...
-
html→aspxへのタグ変換方法
-
COBOLのCOMP形式について
-
Excel 1セル当りの文字数が2...
-
バイト列とバイナリ列の違いが...
-
ビットからバイトへの変換
-
Excel VBA メール作成について ...
-
C++ Builderで文字列をバイトに...
-
ビットスワップとバイトスワッ...
-
char str[256]の256の意味は?
-
perlで重複をさせない処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
C言語 ファイル内のデータと入...
-
int型(2バイト)データの分割
-
ポインター引数の関数でコンパ...
-
C言語でのLinuxとwindows共通の...
-
Excel VBA グラフ作成のとき...
-
【Excel VBA】10進数を2進数に...
-
データの値の近いものをグルー...
-
C言語の構造体にてバブルソート...
-
CreateProcessでの環境変数の設...
-
PINVOKEで構造体配列をマーシャ...
-
c言語 Bitについて
-
ビットデータのチェック方法
-
C++/CLIのオブジェクト型配列
-
RegQueryValueExでの2バイト文字
-
'dataType' 引数を Null にする...
-
System.Collections.ArrayList ...
おすすめ情報