记录一个pythoncom组件注册不成功问题(后来我放弃了Python)

背景:我需要定期从某个标题下的邮件内下载附件,并上传到公司内网某链接。由于邮件标题格式可定义,附件安全,公司内网上传路径固定,所以我想弄个脚本把这个过程自动化。

第一步:从Lotus Notes邮箱找到该邮件并下载附件到桌面
小白的我找了一些代码参考,并按代码引用的库补充安装了win32com,然而在引用 Client.Dispatch 时出现了以下错误:

>>> session = Dispatch('Lotus.NotesSession')
Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, '操作无法使用', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "", line 1, in 
    session = Dispatch('Lotus.NotesSession')
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221164, '没有注册类', None, None)

进一步百度看到这种问题主要是dll 或com插件注册得不正确。于是根据大神的帖子把 regsvr32.exe 抄到 C:\Windows\SysWOW64 路径下,以管理员身份执行 regsvr32.exe dm.dll,得到与大神截然不同的结果:
记录一个pythoncom组件注册不成功问题(后来我放弃了Python)_第1张图片
为什么会缺少这个模块呢?以及如何解决这个问题呢?嗯,在我大谷歌上,找到了如下贴心解决方案:
https://www.solvusoft.com/en/files/missing-not-found-error/dll/windows/microsoft/win32-software-development-kit/dm-dll/

足足10个optional solution,还贴心地按由易到难排了顺序。那么就从第一个开始尝试吧:
1.利用 windows cmd 先卸载再重装 dll 组件。失败结果如下:
记录一个pythoncom组件注册不成功问题(后来我放弃了Python)_第2张图片
失去了耐心的我,又学习了一会儿COM/DLL组件区别的科普,以及搜索到了新的帖子(https://blog.csdn.net/qq_41185868/article/details/80468227)发现COM插件似乎从来未曾存在过之后,果断放弃了这条路线。

不就是把每周一收到的指定邮件附件下载到本机吗?
Notes代理你值得拥有
记录一个pythoncom组件注册不成功问题(后来我放弃了Python)_第3张图片
Initialize 部分代码来自 IBM Knowledge Center:
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_EXAMPLE_WORKING_WITH_EMBEDDED_OBJECTS_LOTUSSCRIPT.html

成功下载到本地:
记录一个pythoncom组件注册不成功问题(后来我放弃了Python)_第4张图片
所以说自动化这种事情,除了死磕配置,还可以曲线救国┗( ▔, ▔ )┛

你可能感兴趣的:(记录一个pythoncom组件注册不成功问题(后来我放弃了Python))