[Delphi:90529] 環境変数の設定について

620 views
Skip to first unread message

田中 芳起

unread,
Jul 10, 2008, 9:57:36 AM7/10/08
to Delphi ML
次のような関数を用意し、環境変数に値をセットしようとしていますが上手くい
きません。

function SetEnvVar(EnvName, VarStr: string): Boolean;
begin
Result := SetEnvironmentVariable(PChar(EnvName), PChar(VarStr));
end;


どなたか、ご教授頂けないでしょうか? 宜しくお願いします。

田中 芳起

Hidemi Oya

unread,
Jul 10, 2008, 11:37:39 AM7/10/08
to Del...@ml.users.gr.jp
田中さん、こん**は。Hidemi Oya です。

> 次のような関数を用意し、環境変数に値をセットしようとしていますが上手くい
> きません。
 D7 で次のように確認しましたが、問題なくセットされます。どのような環境
で、具体的に何がどのように上手くいかないのでしょうか?
 なお、SetEnvironmentVariable は自プロセスの環境領域にセットするだけで、
ユーザー環境変数やシステム環境変数にはセットできないのでご注意を。

procedure TForm1.Button1Click(Sender: TObject);
var
s: array[0..511] of char;
begin
Edit1.Text := IntToStr(integer(SetEnvVar('TestVal', 'Environment Variable')));
GetEnvironmentVariable('TestVal', @s, 512); // Windows.pas
Edit2.Text := s;
Edit3.Text := GetEnvironmentVariable('TestVal'); // SysUtils.pas
end;

Hidemi Oya


Hikaru Fukushi

unread,
Jul 11, 2008, 12:11:14 AM7/11/08
to Del...@ml.users.gr.jp
田中さん、こんにちは。福士と申します。

> > ユーザー環境変数やシステム環境変数にはセットできないのでご注意を。
> 見落としておりました。逆に、これらの環境変数に設定する方法をご教授いただ
> けますでしょうか..。

Environment Variables (Windows)
http://msdn.microsoft.com/en-us/library/ms682653(VS.85).aspx

環境変数をシステムに通知する方法
http://support.microsoft.com/kb/104011

にあるとおり、レジストリに書き込んでWM_SETTINGCHANGEメッセージを
ブロードキャストすればいいとおもいます。なおこれらのレジストリに
書き込みを行うときはそれなりのユーザ権限が必要だと思われますので
ご注意ください。


+=========+=========+=========+=========+=========+=========+=========+
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp
+=========+=========+=========+=========+=========+=========+=========+

Reply all
Reply to author
Forward
0 new messages