即使与管理员用户一起使用,也无法使Python WMI工作
我已经使用Python的WMI很长一段时间了,我使用PythonElevate来处理服务。然而,我在Robot Framework的IDE(RIDE)上遇到了麻烦,该IDE由于提升.elevate()而终止,因为Python解释器再次以管理员权限启动,RIDE认为测试已经中断 我在一台本地机器上,所有运行Robot FW的用户都拥有管理员权限,UAC已关闭。我发现在初始化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
#
# 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")