【Perl】【Windows】システム環境変数を取得できますか?


ActivePerl でWindowsのシステム環境変数を取得するにはどうすればよいのでしょうか?
CGIサーバの話ではありません。

回答の条件
  • 1人2回まで
  • 登録:2006/06/04 17:01:19
  • 終了:2006/06/04 19:00:36

ベストアンサー

id:znz No.2

znz回答回数193ベストアンサー獲得回数252006/06/04 17:53:59

ポイント100pt

Win32::OLEを使って取得できるようです。

Environment("SYSTEM")の代わりにEnvironment("USER")にすればユーザ環境変数になります。

#!/usr/bin/perl -w
use strict;
use Win32::OLE;
my $WshShell = Win32::OLE->CreateObject("WScript.Shell");
my $SysEnv = $WshShell->Environment("SYSTEM");
for my $value (in $SysEnv) {
    print "$value\n";
}
id:radio3

ありがとうございます!

バッチリでした。

2006/06/04 18:59:13

その他の回答(1件)

id:dica33 No.1

dica33回答回数37ベストアンサー獲得回数32006/06/04 17:47:39

ポイント35pt

当方ActivePerlを入れてないので確認できていませんが、

http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/Env.htm...

こちらの方法で出来るのではないかと思います。

id:radio3

確認してませんが(^^;)

ありがとうございました!

2006/06/04 19:00:02
id:znz No.2

znz回答回数193ベストアンサー獲得回数252006/06/04 17:53:59ここでベストアンサー

ポイント100pt

Win32::OLEを使って取得できるようです。

Environment("SYSTEM")の代わりにEnvironment("USER")にすればユーザ環境変数になります。

#!/usr/bin/perl -w
use strict;
use Win32::OLE;
my $WshShell = Win32::OLE->CreateObject("WScript.Shell");
my $SysEnv = $WshShell->Environment("SYSTEM");
for my $value (in $SysEnv) {
    print "$value\n";
}
id:radio3

ありがとうございます!

バッチリでした。

2006/06/04 18:59:13
  • id:villain
    そのまま、環境変数を格納している特殊変数%ENVで取得できますよ。

    print "$ENV{'PATH'}\n";
    print "$ENV{'TEMP'}\n";

    など。

    http://allabout.co.jp/internet/cgiperl/closeup/CU20041105A/index2.htm
  • id:znz
    Windowsの環境変数はいくつかあって、%ENVでアクセスできるのは、
    http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html
    の環境変数の種類の説明でいうプロセス環境変数なので、システム環境変数やユーザー環境変数とは別物です。
  • id:villain
    そうだったんですか。
    すみません。
    これでウォッチリストから消去しますのでこの後の返信はできません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません