VBS использует python COM-класс, определенный для текущего пользователя - PullRequest
1 голос
/ 10 февраля 2020

Я создал python COM-класс для текущего пользователя, чтобы его можно было использовать без прав администратора. Я изменил модуль python win32com.server.register, чтобы создать реестр только для текущего пользователя вместо всех.

Автономный скрипт работает нормально, и COM-сервер успешно регистрируется. Вот мой сценарий:

import pythoncom, win32com.server.register_current_user

class Python_For_VBS:
    _reg_progid_ = 'PythonForVBS.Utilities'
    _reg_clsid_ = pythoncom.CreateGuid()
    _reg_desc_ = "Python Test COM Server"
    _public_methods = ['HelloWorld']


def HelloWorld(self, item=None):
    return 'Hello World!'


if __name__ == '__main__':
    print('Registering COM server?quo')
    win32com.server.register_current_user.UseCommandLine(Python_For_VBS)

Но проблема в том, что я не могу использовать этот класс с VB CreateObject ().

Sub Python_Test

Dim PythonUtils
Dim response

Set PythonUtils = CreateObject("PythonForVBS.Utilities")
response = PythonUtils.HelloWorld()
MsgBox response

End Sub

Может ли VB использовать только классы, определенные для все пользователи? Если нет, то как я могу использовать этот класс из VBScript?

РЕДАКТИРОВАТЬ:

Я использую Python 64-бит, и я запускаю этот VBScript в QlikView. Таким образом, он не показывает никакой ошибки, но скрипт не выполняется, и отладчик указывает на строку, которая вызывает функцию CreateObject (), поэтому я предполагаю, что именно в этом и заключается ошибка.

экспорт реестра из HKEY_CURRENT_USER\Software\Classes\PythonForVBS.Utilities

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\PythonForVBS.Utilities]

[HKEY_CURRENT_USER\Software\Classes\PythonForVBS.Utilities\CLSID]
@="{62F16FCC-730A-4CD4-9249-CE1B683AE423}"

экспорт реестра из HKEY_CURRENT_USER\Software\Classes\CLSIDPythonForVBS.Utilities

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\CLSIDPythonForVBS.Utilities]
@="Python Test COM Server"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...