即使与管理员用户一起使用,也无法使Python WMI工作

即使与管理员用户一起使用,也无法使Python WMI工作,python,wmi,wmic,Python,Wmi,Wmic,我已经使用Python的WMI很长一段时间了,我使用PythonElevate来处理服务。然而,我在Robot Framework的IDE(RIDE)上遇到了麻烦,该IDE由于提升.elevate()而终止,因为Python解释器再次以管理员权限启动,RIDE认为测试已经中断 我在一台本地机器上,所有运行Robot FW的用户都拥有管理员权限,UAC已关闭。我发现在初始化wmi对象时可能需要“模拟”,但尝试了以下操作后,我无法完成任何操作,除非我“获得”管理权限 以下是我所尝试的: # # Tr

我已经使用Python的WMI很长一段时间了,我使用PythonElevate来处理服务。然而,我在Robot Framework的IDE(RIDE)上遇到了麻烦,该IDE由于提升.elevate()而终止,因为Python解释器再次以管理员权限启动,RIDE认为测试已经中断

我在一台本地机器上,所有运行Robot FW的用户都拥有管理员权限,UAC已关闭。我发现在初始化wmi对象时可能需要“模拟”,但尝试了以下操作后,我无法完成任何操作,除非我“获得”管理权限

以下是我所尝试的:

#
# Tried impersonation delegate. Used a moniker from various sources, but they don't work too.
#

wmi_obj = wmi.WMI(impersonation_level="Impersonate", privileges=["SystemProfile", "MachineAccount", "Security"])

class ManageServiceException(Exception) :
    pass

def GetServiceInfo(service_name) :
    """
    Get information about the service(s) whose name matches with the _service_name_.
    Return an object of the service, if found or raise an exception.
    Eg: obj.State
    """
    global wmi_obj
    #elevate.elevate(show_console=False) # tried show_console=True and False
    try:
        return wmi_obj.Win32_Service(Name=service_name)
    except:
        raise ManageServiceException("No service found with name %s"% service_name)

我可以控制services.msc中的服务,而无需“以管理员身份运行”。我想在这里也这样做。

终于找到了正确的解决方案:

wmi_obj = wmi.WMI(moniker="winmgmts:\\\\.\\root\\cimv2", impersonation_level="Impersonate")