SFC miniのインストールがWindows Vistaで失敗する件について
2008年3月21日
現在配布中のSFC mini ver 1.0.1をWindows Vistaにインストールしようとすると、次のようなエラーが出てインストールできません。

このエラーを回避するためには、次に述べるいずれかの方法を用いてください。
1)管理者としてコマンドプロンプトを開き、SFC mini ディレクトリに移動した後に、install-AMD.vbsもしくはinstall-INTEL.vbsを実行する。
2)MakeExeを用いてinstall-AMD.vbsもしくはinstall-INTEL.vbsをexeファイルに変換した後、このexeファイルを管理者として実行する。
いずれの方法でもインストール可能なはずです。
また、Windows Vistaのバグだと思われること(下記参照)が原因で、サンプルプログラムのいくつかが動きません。VBSファイルを少し改変することで、この不具合を回避することができます。例えば、WinSockClient.vbsの場合だと、2行目あたりを次のように変更してください。
WinForm等のライブラリを用いているスクリプトについては、ライブラリ自身のVBSファイルを変更する必要があります。これについては、時期配布バージョンで対応する予定です。
(参考)
1)この不具合についてですが、COMからの戻り値である文字列を直接Executeした場合に、Execute自体は成功するけれども、その直後に不具合が発生するという状況です。ガベージコレクタ周りの不具合では無いかと考えています。WSHのこのような利用の仕方はまれなケースなので、Windows側でこのことについて改善されるかどうかは分かりません。
2)Windows Vistaでは、wscript.exeに対してDEPを無効にすることはできないようです。WinForm等を利用するスクリプトを実行する場合は、install-AMD.vbsを利用してください。

このエラーを回避するためには、次に述べるいずれかの方法を用いてください。
1)管理者としてコマンドプロンプトを開き、SFC mini ディレクトリに移動した後に、install-AMD.vbsもしくはinstall-INTEL.vbsを実行する。
2)MakeExeを用いてinstall-AMD.vbsもしくはinstall-INTEL.vbsをexeファイルに変換した後、このexeファイルを管理者として実行する。
いずれの方法でもインストール可能なはずです。
また、Windows Vistaのバグだと思われること(下記参照)が原因で、サンプルプログラムのいくつかが動きません。VBSファイルを少し改変することで、この不具合を回避することができます。例えば、WinSockClient.vbsの場合だと、2行目あたりを次のように変更してください。
dim code code=CreateObject("SfcMini.tools").Include("<Winsock.vbs>") Execute code
WinForm等のライブラリを用いているスクリプトについては、ライブラリ自身のVBSファイルを変更する必要があります。これについては、時期配布バージョンで対応する予定です。
(参考)
1)この不具合についてですが、COMからの戻り値である文字列を直接Executeした場合に、Execute自体は成功するけれども、その直後に不具合が発生するという状況です。ガベージコレクタ周りの不具合では無いかと考えています。WSHのこのような利用の仕方はまれなケースなので、Windows側でこのことについて改善されるかどうかは分かりません。
2)Windows Vistaでは、wscript.exeに対してDEPを無効にすることはできないようです。WinForm等を利用するスクリプトを実行する場合は、install-AMD.vbsを利用してください。
コメント
Kat (2008年3月21日 16:29:03)
備忘メモ:
VBScriptにおいて、管理者権限でアプリケーションを実行する方法:
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute strApplication, strArguments, "", "runas"
参考:
http://technet.microsoft.com/en-us/magazine/cc162321.aspx
VBScriptにおいて、管理者権限でアプリケーションを実行する方法:
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute strApplication, strArguments, "", "runas"
参考:
http://technet.microsoft.com/en-us/magazine/cc162321.aspx
Kat (2008年4月7日 12:50:07)
備忘メモ:
Windowsのバージョンをチェックするコードを発見:
http://www.microsoft.com/japan/technet/community/columns/scripts/sg0903.mspx
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
Wscript.Echo "OS Name: " & objOperatingSystem.Caption
Wscript.Echo "Version: " & objOperatingSystem.Version
Next
実行結果:
OS Name: Microsoftr Windows VistaT Home Premium
Version: 6.0.6000
Windowsのバージョンをチェックするコードを発見:
http://www.microsoft.com/japan/technet/community/columns/scripts/sg0903.mspx
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
Wscript.Echo "OS Name: " & objOperatingSystem.Caption
Wscript.Echo "Version: " & objOperatingSystem.Version
Next
実行結果:
OS Name: Microsoftr Windows VistaT Home Premium
Version: 6.0.6000
Kat (2008年4月7日 12:53:15)
WSH のバージョンは、WScript.versionで取得できる。Vistadでは、5.7を返す。