Hi everybody,
I'm having a problem when I try to query a remote (only a remote )computer using wmi. The python code has been compiled to become a windows service. I'm planning to query systems that implement the DMTF standard, WBEM, and for that I need a class that can handle cim-xml protocol and wmi connections. The functionalities are accessed through a XML-RPC server which is run in a separated thread inside the SvcDoRun method. This server has a procedure called Query that is used, obviously, to querie a remote systems or the local system. Inside this procedure I do the pythoncom.CoInitialize and pythoncom.CoUninitialize and in between I use the conection class mentioned above. The service work perfect when I query localhost but fails to query any remote machine. I have tried wmitester.exe a tool to test wmi and using the same user and password and remote� machine it works so It is not a permission problem. I also changed the name of the module wmi to my_wmi in case there could be a problem with wmi.dll but nothing changes.�The exception is here (__init__ at WBEMConn): ... self.conn = None ... try: ��� self.conn = wmi.WMI(computer = self.host, user = self.user, password = self.password) ��� self.system = "wmi" except wmi.x_access_denied: ����self.status = "access_denied" ��� return I have a module for the connection class (It has been tested outside the service and it works). import pywbem import wmi class WBEMConn: ��� def __init__(self, url, user, password) ��������� self.url = url ��������� self.user = user ��������� self.passwd = password ��������� self.conn = None ��������� #--------Here the is attempted a connection to a system which might be using cim-xml protocol ��������� #--------If fails try wmi. ����������#--------if fails can not talk cim-xml or wmi ���������� ���������� ����def�ExecQuery(self,query): �������� if self.conn is None: ��������������� return�None �������� if self.system == "cim-xml": ������������� result = self.conn.ExecQuery("wql", query)#----for pywbem ���������else: �������������� result �= self.conn.query(query)����#---for wmi ��������������� A module that defines a class for the xml-rpc server. class ThreadedXMLRPCServer_BasicAuth(ThreadingMixIn, SimpleXMLRPCServer) class ServerFunc: ����� def Query(self, url, user, password, query): ������������� try: ����������������� pythoncom.CoInitialize() �������������������������conn = WBEMConn(url, user, password) ������������������������ result = conn.ExecQuery(query) �������������� finally: ����������������������� pythoncom.CoUninitialize() ���������������return result������������������ The service's SvcDoRun method. def SvcDoRun(self): ����#-----import�all requiered modules ���� def StartServer(): ���������� self.server.serve_forever() ���� self.server = ThreadedXMLRPCServer_BasicAuth(...) ���� func = ServerFunc() ���� self.server.register_instance(func) ���� StartServer() ���� while self.running: ����������time.sleep(3) def SvcStop(self): �� ...... �� self.server.shutdown() �� self.running = False � ..... ���� Thanks a lot, Boris. --- Convencion Internacional de Psicologia y Ciencias Sociales y Humanas Cienfuegos, Cuba, del 19 al 22 de abril del 2011 http://promociondeeventos.sld.cu/hominis2011
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32