2012-01-12 25 views
0

こんにちは私はWMIを使用してUSBSTORのリモートレジストリ値を変更しています。有効化と無効化のために、start属性の値を4または3に変更したいとします。 しかし、レジストリのStart属性のデータ型はDWORDです。もしデータ型が大きければ動作しません。 データ型をDWORDにしておく必要があります。誰かがWMIを使ってsetDWORDValueを設定する方法を教えてもらえますか?次のコードは私が試したコードですが、それはうまくいっていますが、開始フィールドの値はレジストリに変更されていません。WMI USBの有効化と無効化

const uint HKEY_LOCAL_MACHINE = 0x80000002; 

ManagementBaseObject methodParams = registryTask.GetMethodParameters(typeOfValue); 

methodParams["hDefKey"] = HKEY_LOCAL_MACHINE;// BaseKey; 
methodParams["sSubKeyName"] = @"SYSTEM\\CurrentControlSet\\Servic\\USBSTOR"; 
methodParams["sValueName"] = "Start"; 

try 
{ 
    methodParams["sValue"] = "3"; 
} 
catch 
{ 
    methodParams["uValue"] = (UInt32)Convert.ToInt32("3"); 
} 

ManagementBaseObject exitValue = registryTask.InvokeMethod(typeOfValue, methodParams, null); 

答えて

0

Pythonを使用した単純なソリューション。

import wmi 
import win32api,_winreg 

c = wmi.WMI() 

# To get the binary value of particular subkey 
# Please note that 0x80000002 represents HKEY_LOCAL_MACHINE 
ReturnValue, uValue = c.StdRegProv.GetBinaryValue(0x80000002,"AFD","SYSTEM\CurrentControlSet\Services") 

# To get the list of all the subkeys available in particular key 
ret, subKeys = c.StdRegProv.EnumKey (0x80000002, "SYSTEM\CurrentControlSet\Services") 
print ret 
for key in subKeys: 
    print key 

ReturnValue=c.StdRegProv.SetDWORDValue(0x80000002,"Type","SYSTEM\CurrentControlSet\Services\USBSTOR",0x4) 

#HKEY_CLASSES_ROOT (2147483648 (0x80000000)) 
#HKEY_CURRENT_USER (2147483649 (0x80000001)) 
#HKEY_LOCAL_MACHINE (2147483650 (0x80000002)) 
#HKEY_USERS (2147483651 (0x80000003)) 
#HKEY_CURRENT_CONFIG (2147483653 (0x80000005)) 
#HKEY_DYN_DATA (2147483654 (0x80000006)) 
0

はいできます。コードは、Microsoft linkthisを参照してください。 3389を使用する新しい値に置き換え、必要に応じてキーを変更します。

const HKEY_LOCAL_MACHINE = &H80000002 
strComputer = "." 
'Set StdOut = WScript.StdOut 
Set oReg=GetObject(_ 
    "winmgmts:{impersonationLevel=impersonate}!\\" &_ 
    strComputer & "\root\default:StdRegProv") 
strKeyPath = "SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" 
strValueName = "PortNumber" 

' Display old value 
oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue 
WScript.Echo "Old RDP value=" & dwValue 

' Set new value 
dwValue= 3389 
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue 
If Err = 0 Then 
    oReg.GetDWORDValue _ 
     HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue 
    WScript.Echo "New RDP Value =" & dwValue 
Else 
    WScript.Echo "Error in creating key" & _ 
     " and DWORD value = " & Err.Number 
End If