小编mpu*_*uit的帖子

使用pythoncom.CoUninitialize()和wmi时发生Win32异常

我正在尝试创建一个在python 3.4中创建一个将ping服务器的函数.目前它只需要在Windows上运行(可能是XP及以上版本).

我发现我可以使用WMI Win32_PingStatus(引用)类来ping服务器并编写了以下函数:

import sys

if sys.platform.startswith('win32'):
    import wmi
    import pythoncom


def ping(ip_address):
    """ Check if can ping ip address using OS ping tool"""
    if sys.platform.startswith('win32'):
        try:
            pythoncom.CoInitialize()
            c = wmi.WMI()
            status_code = c.Win32_PingStatus(address=ip_address)[0].StatusCode
            if status_code == 0:
                successful = True
            else:
                successful = False

            pythoncom.CoUninitialize()

        except wmi.x_wmi:
            # If WMI ping fails fallback
            pass

    else:
        raise NotImplementedError

    return successful

if __name__ == "__main__":
    ping("127.0.0.1")
Run Code Online (Sandbox Code Playgroud)

这可以按预期工作,因为当你可以ping IP时返回True,而当你不能时,它返回false.但是每次我运行它时,最后都会遇到一系列错误:

Win32 exception occurred releasing IUnknown at 0x03140980
Win32 exception occurred …
Run Code Online (Sandbox Code Playgroud)

python wmi winapi

2
推荐指数
1
解决办法
1974
查看次数

标签 统计

python ×1

winapi ×1

wmi ×1