WMI USB Включить и отключить - PullRequest
0 голосов
/ 12 января 2012

Привет! Я использую WMI для изменения значения удаленного реестра для USBSTOR.Я хочу изменить значение начального атрибута на 4 или 3 для включения и выключения.Но тип данных для атрибута Start в реестре - DWORD, если я могу определить тип данных по размеру, он не работает.Мне нужно сохранить тип данных в DWORD.Может кто-нибудь, пожалуйста, скажите мне, как установить DWORDValue с помощью WMI, ниже приведен фрагмент кода, который я пробовал, он работал успешно, но все же значение поля запуска в реестре не изменяется.

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);

Ответы [ 2 ]

0 голосов
/ 12 сентября 2012

Да, это может быть сделано.Вот код, ссылающийся на эту ссылку Microsoft и эту .Замените 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
0 голосов
/ 04 июля 2012

Простое решение с использованием 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...