NSDをVBSで実行する

2009年03月04日 00:02

NSD を実行するバッチファイルを作った事がある方は多いと思うのですが、どうしてもプログラムディレクトリやデータディレクトリの値を環境毎に書き換えないといけないのがあまり好きでなかったので、VBSで作ってみました。 データディレクトリとプログラムディレクトリの値をレジストリから取って実行します。これだと設定無しで動くので使いやすいかな、と思います。
 これだけでVBSを使うのは面白くないので、OSの判別コードも入れて、Windows XP/Vista でサポートされている、「nsd -detach」 に出来るようにしました。8.x 以降はデフォルトで入っているので入れても入れなくてもいいのですが、何かのバッチ処理でプログラムディレクトリやデータディレクトリの値を取ったり、OSの判別をするようなことはあるのではないかと思うので、他の目的でも使える部分は多いのではないかと思います。

注:
・ Lotus Notes 6.5.x 以降のクライアントで実行する事を想定しています。
  それ以前のクライアントでは -detach がサポートされていません。
・ マルチユーザーでは実行できません。
  (ただし、どっちもレジストリキーの問題なので、書き換えれば動くと思います)
・ 実行後クライアントをクリーンアップしたい場合は、strOption = " -DumpAndKill" に書き換えてください。この場合はOS判別コードは要りません。



RunNSD.vbs
Function GetProgramDir()
GetProgramDir = ""
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
strValue = objWshShell.RegRead("HKLM\SOFTWARE\Lotus\Notes\Path")
if Right(strValue,1) <> "\" Then
strValue = strValue & "\"
End if
GetProgramDir = strValue
End Function

Function GetDataDir()
GetDataDir = ""
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
strValue = objWshShell.RegRead("HKLM\SOFTWARE\Lotus\Notes\DataPath")
if Right(strValue,1) <> "\" Then
strValue = strValue & "\"
End if
GetDataDir = strValue
End Function

Function IsWin2k()
IsWin2k = False
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
If Instr (objOperatingSystem.Caption, "Windows 2000") > 0 Then
IsWin2k = True
End If
Next
End Function

Dim objWshShell
Dim strCmdLine
Set objWshShell = WScript.CreateObject("WScript.Shell")
NSDPath = GetProgramDir() & "nsd.exe"
objWshShell.CurrentDirectory = GetDataDir()

If Not isWin2k() Then
strOption = " -detach"
End If

strCmdLine = NSDPath & strOption
objWshShell.Exec(strCmdLine)

If Err.Number <> 0 Then
WScript.Echo "NSD 実行エラー: " & Err.Description
End If


コメント

  1. Hisashi Kumazawa | URL | JyN/eAqk

    Re: NSDをVBSで実行する

    GetProgramDir()で読み込むレジストリは「HKLMSOFTWARELotusNotesDataPath」ではなくて「HKLMSOFTWARELotusNotesPath」ではないでしょうか。

  2. 長島 | URL | -

    そうですね・・・

    ご連絡ありがとうございます。

    Web用に加工しているときに変になってしまっていたようです。
    レジストリパスは直しておきました。本当にこのようなご指摘は助かります。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://hnagasim.blog8.fc2.com/tb.php/100-5962cd8e
この記事へのトラックバック


最新記事