ヨッシーの部屋

オートバイとパソコンの話題が中心

VBSでログオンスクリプトを再構築(その3)

2006-06-30 12:45:09 | Windows管理者の悩ましき日々
今回はOSの識別(XP以外は動作不可とする)コードを考える。

NT4.0時代ではOSの【Ver】コマンドを使用して振り分けていたが何故かVBAではエラーとなる。
記述したコードは以下の通り。

1: Set objSll = CreateObject("WScript.Shell")
2: Set objExec = objSll.Exec("ver")
3: Do Until objExec.StdOut.AtEndOfStream
4:  strLine = objExec.StdOut.ReadLine
5:  Debug.Print(strLine)
6: Loop

2行目で「指定されたファイルが見つかりません」となる。

仕方なく他のコードをあたって見るがその手法は様々だ。
私が管理している環境ではあり得ないことだが、Win95や98等でログインされてもエラーとならないコードにしたい。
かつコードは複雑にしたくないと考えつつトライ&エラーの末、以下のコードを完成させた。

01: Const RegOS = "HKLM¥SOFTWARE¥MicrosoftWindows NT¥CurrentVersion¥ProductName"
02: Set objSll = CreateObject("WScript.Shell")
03: If objSll.Environment("Process").Item("OS") = "Windows_NT" Then
04:  If objSll.RegRead(RegOS) <> "Microsoft Windows XP" Then
05:   Wscript.Echo "Windows XP 以外の OS ではネットワークドライブを接続しません。"
06:   Wscript.Quit
07:  End If
08: Else
09:  Wscript.Echo "Windows XP 以外の OS ではネットワークドライブを接続しません。"
10: Wscript.Quit
11: End If

3行目で環境変数【%OS%】の値を取得し、NT系OSであることを識別する。
4行目でレジストリ【¥¥HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥ProductName】の値を取得し、XPであることを識別する。

倍のステップ数になってしまたがこれで完璧。


最新の画像もっと見る