_wmi_object的copy.deepcopy()导致异常

时间:2015-07-16 17:45:50

标签: python copy wmi

我在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__()

我不想维护引用,而是希望在存储它们并使用它们之前对对象进行深度复制。

有可能吗?

1 个答案:

答案 0 :(得分:0)

无法复制PyIDispatch。 IDispatch派生的对象只能是新创建的。

如果使用python WMI模块,则只能创建一个新的WMI对象,并将旧对象的属性逐个复制到较新的对象中。

例如,创建一个新的Win32_Process实例,

newproc = wmi.WMI().Win32_Process.new()

然后使用旧实例的属性更新此实例的每个属性。