2016-08-26 41 views
0

我想import Python代码到VBA中。Python COM服务器与VBA晚期招标+跳过赢取注册(无管理权限)

下面的代码工作,但需要管理员权限。有没有办法绕过赢得注册需要(假设我只是没有管理员权限),但保持“迟交”行为(不想每次编译新东西时都需要工具>>参考)

class ProofOfConcept(object): 
    def __init__(self): 
     self.output = [] 

    def GetData(self): 
     with open('C:\Users\MyPath\Documents\COMs\SourceData.txt') as FileObj: 
      for line in FileObj: 
       self.output.append(line) 
      return self.output 

class COMProofOfConcept(object): 
    _reg_clsid_ = "{D25A5B2A-9544-4C07-8077-DB3611BE63E7}" 
    _reg_progid_= 'RiskTools.ProofOfConcept' 
    _public_methods_ = ['GetData'] 

def __init__(self): 
    self.__ProofOfConcept = ProofOfConcept() 

def GetData(self): 
    return self.__ProofOfConcept.GetData() 

if __name__=='__main__': 
    print "Registering COM server..." 
    import win32com.server.register 
    win32com.server.register.UseCommandLine(COMProofOfConcept) 

调用它VBA代码:

Sub TestProofOfConcept() 
    Set PoF = CreateObject("RiskTools.ProofOfConcept") 
    x = PoF.GetData() 
    MsgBox x(0) 
End Sub 

回答

3

总之,没有。 VBA运行时基本上使用底层的CoGetClassObject COM API - CreateObject()函数基本上只是一个简单的包装器(它调用CLSIDFromString来首先从参数中查找CLSID)。这两个功能都要求课程注册。