如何解决为什么查看VSS会导致OLE错误0x80041014?
我试图用python编写一些数字取证软件,这意味着我需要一种方法来访问Windows上的卷影副本。我正在使用以下代码块关注SANS https://www.sans.org/blog/using-volume-shadow-copies-from-python上的这篇文章。
import win32com.client
def vss_list(self):
wcd = win32com.client.Dispatch("WbemScripting.SWbemLocator")
wmi = wcd.ConnectServer(".","root\cimv2")
obj = wmi.ExecQuery("SELECT * FROM Win32_ShadowCopy")
return [x.DeviceObject for x in obj]
我的问题是此函数返回pywintypes.com_error: (-2147217388,'OLE error 0x80041014',None,None)
。如果将return语句更改为return obj[0]
,也会发生同样的情况。我试图尝试找到错误代码的解释,而我发现的最好的方法是在https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-error-constants
WBEM_E_INITIALIZATION_FAILURE
2147749908 (0x80041014)
Component,such as a provider,failed to initialize for internal reasons.
我不确定这是代码的意思,还是我的问题以及如何解决。
在此先感谢您的帮助
解决方法
尽管在您的情况下可能不是这种情况,但使我对VSS WMI类感到不满的一件事是其体系结构依赖性。在64位OS上,它将无法从32位进程运行。确保您的Python解释器作为64位进程运行。
来自Win32_ShadowCopy类documentation。
注意:此类不适用于Windows上的32位应用程序 Server 2008 x64。要使用Visual Studio访问类,请转到Project 属性,然后选择常规,然后取消选中“首选32位”框。
我希望这就是阻碍您前进的一切。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。