PuTTY ごった煮版のレジストリから INI ファイルを生成する

  PuTTY ごった煮版では、設定の保存先をレジストリではなく、INI ファイルにすることが出来ます。
  そこでレジストリに保存された設定から INI ファイルを作成するスクリプトを書きました。

- putty.iniconv-1.0.0.vbs
  http://pocari.org/tools/putty/putty.iniconv-1.0.0.vbs

  使い方はコマンドプロンプトで以下のようにします。
  putty.ini を putty.exe があるフォルダと同じところに置けば完了です。

C:\> CScript //Nologo putty.iniconv-1.0.0.vbs > putty.ini

'
' INI file converter for PuTTY
'
' Usage:
' C:\> CScript //Nologo putty.iniconv-1.0.0.vbs > putty.ini
'
' Copyright (c) 2008 Norifumi SUNAOKA
' <http://cl.pocari.org/2008-05-10-1.html>
'
' Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
'
'
' Version: 1.0.0
'

Const HKEY_CURRENT_USER  = &H80000001
Const PUTTY_SESSIONS_KEY = "Software\SimonTatham\PuTTY\Sessions\"
Const PUTTY_HOSTKEYS_KEY = "Software\SimonTatham\PuTTY\SshHostKeys\"

Set StdOut = WScript.StdOut
Set WMI    = GetObject("winmgmts:{impersonationLevel=impersonate}!\\." & _
                       "\root\default:StdRegProv")
Set WS     = WScript.CreateObject("Wscript.Shell")

' UseIniFile
StdOut.WriteLine "[Generic]" & vbCrLf & "UseIniFile=1" & vbCrLf

' Sessions
WMI.EnumKey HKEY_CURRENT_USER, PUTTY_SESSIONS_KEY, subkeys
For Each subkey In subkeys
    StdOut.WriteLine "[Session:" & subkey & "]"
    Call OutputValues(PUTTY_SESSIONS_KEY & subkey & "\")
Next

' SshHostKeys
StdOut.WriteLine "[SshHostKeys]"
Call OutputValues(PUTTY_HOSTKEYS_KEY)

Set WS     = Nothing
Set WMI    = Nothing
Set StdOut = Nothing

'
' OutputValues
'
Sub OutputValues(subkey)
    Set RE = new RegExp
    RE.pattern = "^\-?[0-9]+$"
    
    WMI.EnumValues HKEY_CURRENT_USER, subkey, names, types
    For i = 0 To UBound(names)
        value = WS.RegRead("HKCU\" & subkey & names(i))
        If Not RE.Test(value) then
            value = """" & value & """"
        End If
        StdOut.WriteLine names(i) & "=" & value
    Next
    StdOut.WriteLine
    
    Set RE = Nothing
End Sub


  また、以下のサイトで、Perl 版が公開されているのですが、なぜだかうちの環境ではうまくいきませんでした。

- ゑBLOG: PuTTYごった煮版 レジストリ<->INIファイルコンバータ
  http://yebisuya.dip.jp/yeblog/archives/a000456.html