Dobrý den, nemáte někdo zkušenosti s editací WMI z Pythonu? Mám kód::
import wmi class_ = wmi.WMI(computer=".", impersonation_level="Impersonate", privileges=("Backup", "Restore"), namespace="WMI", suffix="BcdStore") _result, store_com = class_.OpenStore("") store = wmi._wmi_object(store_com) manager_com, _result = store.OpenObject("{9dea862c-5cdd-4e70-acc1-f32b344d4795}") manager = wmi._wmi_object(manager_com) _result, = manager.SetIntegerElement(0x25000004, 5) element_com, _result = manager.GetElement(0x25000004) element = wmi._wmi_object(element_com) print(element.Integer) # Beze zmeny :-/ Měl by zavoláním metody ``SetIntegerElement`` nastavit hodnotu 5. Ale i když vzápětí zavolám ``GetElement``, tak zjistím, že se hodnota nezměnila. Přičemž obdobný kód ve VB funguje správně:: dim objBCD dim objBCDStore dim objWBM dim objElement set objBCD = GetObject("winmgmts:{impersonationlevel=Impersonate,(Backup,Restore)}!root/wmi:BcdStore") if Err.number <> 0 then WScript.Quit(1) end if if not objBCD.OpenStore( "", objBcdStore ) then WScript.Quit(1) end if set objBCD = nothing if not objBcdStore.OpenObject( "{9dea862c-5cdd-4e70-acc1-f32b344d4795}", objWBM ) then WScript.Quit(1) end if if not objWBM.SetIntegerElement( &h25000004, 5) then WScript.Quit(1) end if if not objWBM.GetElement( &h25000004, objElement ) then WScript.Quit(1) end if WScript.Echo objElement.Integer Tento strom WMI přibyl až ve Windows Vista. Oba skripty spouštím z příkazové řádky se stejnými "rootovskými" oprávněními. Metoda ``Put_`` se v tomto případě zavolat nedá, ani ji Microsoft v žádných ukázkových skriptech nepoužívá. Skript jsem přepsal i pomocí ``win32com`` knihovny (vypustil jsem ``wmi``, která stejně jen obaluje ``win32com``) a ani to nepomohlo. Děkuju za pomoc -- Radek Holý _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python