我在Python中使用WMI 1.4.9来访问WMI。
我想对作为WQL的一部分返回的_wmi_object进行深度复制,我在python中使用wmi模块执行。
我的代码如下所示,
aproc = wmi.WMI(moniker=self._wmi_namespace).query("SELECT * FROM Win32_Process WHERE Name = 'svchost.exe'")[0]
copiedproc = copy.deepcopy(aproc)
但是当我执行deepcopy(..)
时,我得到了这个例外。
object.__new__(PyIDispatch) is not safe, use PyIDispatch.__new__()
我不想维护引用,而是希望在存储它们并使用它们之前对对象进行深度复制。
有可能吗?
答案 0 :(得分:0)
无法复制PyIDispatch。 IDispatch派生的对象只能是新创建的。
如果使用python WMI模块,则只能创建一个新的WMI对象,并将旧对象的属性逐个复制到较新的对象中。
例如,创建一个新的Win32_Process实例,
newproc = wmi.WMI().Win32_Process.new()
然后使用旧实例的属性更新此实例的每个属性。