|
>>2の方法でやったほうがいいかもしれません。
>と、いわれてやろうと思ったのですが、
>うまく実行できないので、アドバイスお願いします
具体的にどこがわからないのでしょう?
とりあえず、Sampleを簡単に解説します。
Sub EnumPrinters()
Dim objRegProv As Object
Dim strKeyPath As String
Dim vntValueNames As Variant
Dim vntValueTypes As Variant
Dim strValueName As String
Dim strValue As String
Dim i As Long
Const HKCU = &H80000001
' StdRegProvを取得
Set objRegProv = _
GetObject("winmgmts:\\.\root\default:StdRegProv")
strKeyPath = _
"Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"
' strKeyPath以下のRegstry名を配列として、vntValueNamesに格納
objRegProv.EnumValues HKCU, strKeyPath, _
vntValueNames, vntValueTypes
For i = 0 To UBound(vntValueNames)
strValueName = vntValueNames(i)
' 文字列の値を取得
objRegProv.GetStringValue HKCU, strKeyPath, _
strValueName, strValue
' 出力
Debug.Print strValueName & " on " _
& Split(strValue, ",", -1, 0)(1)
Next i
End Sub
この方法では、まず、StdRegProv Class の Instance を
取得する必要があります。
' StdRegProvを取得
Set objRegProv = _
GetObject("winmgmts:\\.\root\default:StdRegProv")
まあ、呪文のようなものです。とりあえず、そのまま覚えてください。
詳しく知りたければ・・・
WMI スクリプト入門 : 第 1 部
http://www.microsoft.com/japan/msdn/columns/scripting/scripting06112002.asp
で、StdRegProv Class の Instance が出来たら、それに対して、
StdRegProv Class の Method を使用してやればいいわけです。
たとえば、文字列型の値を取得したい場合には、GetStringValue
文字列型の値を書き込みたい場合には、SetStringValueといった風に・・・
あとは、GetStringValue, SetStringValue の Link 先をたどって
Reference を参照してください。
|
|