COM与.NET程序集导出和部署COM组件
为了分布式和多客户端调用我们还需要将写好的COM组件发布到一台服务器上。这里我们将组件部署到操作系统的COM+应用程序中去。如果没此需要就可以导出后,在C++环境中调用COM了。
第一步:导出COM组件。我们可以使用regasm.exe(导出并在本机注册)或tlbexp.exe(只导出不注册,在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727中,也可以拷贝到你要的目录中,以前1.1时不行的,还需要调用vsvars32.bat才可以使用)我们也写各bat文件。
gacutil -i SayHello.dll(将强命名的程序集添加到全局缓存中去,不然在运行的时候会报找不到文件的错误)
regasm SayHello.dll /tlb(生成我们需要的tlb文件)
第二步:在得到tlb文件后我们 控制面板->管理工具->组件服务->计算机->我的电脑->COM+应用程序 中进行部署。首先添加一个新的空的COM+应用程序。
再向刚刚建好的COM+应用程序中添加组件。新建组件->安装新组件,选择第一步生成的tlb文件点完成。我们就可以在组件中看到ComDemo.CSayHello和该组件实现的接口ISayHello。
以上工作我们也可以通过脚本来完成,这里我们使用VB Script来做,同样他也时调用COM组件(COMAdminCatalog)实现的。
- '创建COMAdmin.COMAdminCatalog对象
- set cat = CreateObject("COMAdmin.COMAdminCatalog")
- '连接本地主机
- cat.Connect("127.0.0.1")
- '取得COM+应用程序配置
- set apps = cat.GetCollection("Applications")
- '读取现有COM+应用程序配置
- apps.Populate()
- '创建一各新的COM+应用程序配置
- set app = apps.Add()
- '用一各GUID来表示我们的com+应用程序
- app.Value("ID") = "{da2d72e3-f402-4f98-a415-66d21dafc0a9}"
- 'com+应用程序的名字
- app.Value("Name") = "SayHello"
- 'com+应用程序的描述
- app.Value("Description") = ".net and com+ demo"
- 'com+应用程序的模拟级别(1为匿名)
- app.Value("ImpersonationLevel") = 1
- 'com+应用程序的调用的身份验证级别(1为无)
- app.Value("Authentication") = 1
- '保存配置
- apps.SaveChanges()
- '将该应用程序设置为运行在NT Server上
- cat.CreateServiceForApplication "SayHello", "SayHello", "SERVICE_DEMAND_START", "SERVICE_ERROR_NORMAL", "", "", "", False
- '导入已经注册的控件(本来想用InstallComponent,但是总是报错,晕~)
- cat.ImportComponent "SayHello", "{C6D664F5-6CF6-4c12-9948-8A40B16818BE}"
保存VBScript文件将其添加到bat文件中去:
gacutil -i SayHello.dll
regasm SayHello.dll /tlb
installSayHello.vbs
这样就将我们的程序部署到COM+应用程序中去了,后面就是调用了。
COM与.NET程序集导出和部署COM组件的更多相关文章
- vs安装部署“必备”组件里面正常情况没有出现office2010 PIA组件
vs安装部署“必备”组件里面正常情况没有出现office2010 pia组件时,将 Office2010PIARedist 文件夹放在C:\Program Files\Microsoft SDKs\W ...
- (架构)React Native 导出项目全局共用组件的模块
自定义组件全局使用(类似如下) import { ReactNavComponent, Widget, Util } from 'rn-yunxi'; const { RegexpUtil, Stor ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件
文章目录 1.6.部署kube-apiserver 1.6.0.创建kubernetes证书和私钥 1.6.1.生成kubernetes证书和私钥 1.6.2.创建metrics-server证书和私 ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件
文章目录 1.7.部署kube-controller-manager 1.7.0.创建kube-controller-manager请求证书 1.7.1.生成kube-controller-manag ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第08章 - 部署kube-scheduler组件
文章目录 1.8.部署kube-scheduler 1.8.0.创建kube-scheduler请求证书 1.8.1.生成kube-scheduler证书和私钥 1.8.2.创建kube-schedu ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第09章 - 部署kubelet组件
文章目录 1.9.部署kubelet 1.9.0.创建kubelet bootstrap kubeconfig文件 1.9.1.创建kubelet配置文件 1.9.2.配置kubelet为system ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件
文章目录 1.10.部署kube-proxy 1.10.0.创建kube-proxy证书 1.10.1.生成kube-proxy证书和秘钥 1.10.2.创建kube-proxy的kubeconfig ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第11章 - 部署coredns组件
文章目录 1.11.0.部署coredns 1.11.1.测试coredns功能 suse 12 二进制部署 Kubernetes 集群系列合集: suse 12 二进制部署 Kubernetets ...
- 使用VitePress搭建及部署vue组件库文档
每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...
随机推荐
- 详细介绍Java垃圾回收机制
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机 ...
- NGUI中的Tween的委托使用
public TweenPosition tweenIn; public TweenScale tweenOut; EventDelegate In = new EventDelegate(this, ...
- redisTemplate keys方法 为空
我遇到的原因是spring.xml配置有问题,应该为: <bean id="redisTemplate" class="org.springframework.da ...
- hdu 2149 Public Sale 简单博弈
Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯.要种田得有田才行,Lel ...
- php获取url字符串截取路径的文件名和扩展名
<?php //获取连接里边的id $url = 'http://www.rong123.com/cjbkscbsd/x_dfsdfs/24454_1_1.html'; function get ...
- c#中命令copy已退出,返回值为1
c#中命令copy已退出,返回值为1 本正经的道:董姐刚才你说的修心养性其中的'修心'我 有孕在身刚好由戴梦瑶顶替了她的位置按照的指示 ╋旆呆 湎术葶页 邾箕砜笳 烦璜卿廑 奶奶个腿儿的等下次非让你 ...
- js 循环迭代定时器的执行次数和执行顺序??主要是因为js是单线程
当定时器运行时即使每个迭代中执行的是setTimeout(.., 0),所有的回调函数依然是在循环结束后才会被执行 for语句开始赋值i=1;settimeout语句1000毫秒后把timer函数加入 ...
- usaco 17.Jan 铜组T3
上午在打usaco月赛的铜组题,T1T2是用来秒杀的,然而T3卡了一上午,下面给出题面: 题意大概就是输入一个N*N的矩阵,矩阵中元素只有0与1两种状态,每次操作以左上角的点为矩阵中某一矩阵的左上方顶 ...
- Spring 上传文件
最近碰到一个上传文件的需求,其实之前也做过但是都是search->copy 没有细究过,这次纯手工. 先看一下需要依赖的包: <dependency> <groupId> ...
- 打开新世界的第一步:学习servlet
什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-F ...