您的位置:首页 > 编程语言 > Python开发

catia免安装之注册COM组件

2014-02-14 12:54 309 查看
系统还原后,注册表里的COM组件信息全部失去,要想再使用catia的COM组件,就要手动重新注册.首先找到catia安装目录"...\Dassault Systemes\B20\intel_a\code\bin"可以发现COM组件的.tlb文件都在这里,由于数目众多,所以在该目录下创建一个python脚本实现批量注册,注册需要用到Microsoft.NET Framework的regtlibv12.exe文件.

# -*- coding: utf-8 -*-
#
# Copyright (C) 2014 csuodn
#
#
from subprocess import Popen, PIPE
import os
import fnmatch

def all_files(root=os.getcwd(), patterns='*', single_level=False, yield_folders=False):
# 将模式从字符串中取出放入列表中
patterns = patterns.split(';')
for path, subdirs, files in os.walk(root):
if yield_folders:
files.extend(subdirs)
files.sort()
for name in files:
for pattern in patterns:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(path, name)
break
if single_level:
break

for f in all_files(patterns="*.tlb", single_level=True):
cmds = [r"C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe", f]
p1 = Popen(cmds, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdoutdata, stderrdata = p1.communicate()
if stderrdata:
print(stderrdata.decode("gb2312"))
if stdoutdata:
print(stdoutdata.decode("gb2312"))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python catia