一、实验准备
二、实验目标
构建一个com组件,该组件可以对一个字符串数组进行加密和解密;(加/解密算法自己定义,或者调用调用其他的库)
三、实验设计与实现过程
一、利用C#创建一个com组件
1.1用Visual studio2017创建一个工程
image.png
1.2在“解决方案资源管理器”里面重命名.cs文件为comtojava.cs
image.png
1.3工程属性设置
image.png
点击“应用程序-程序集信息”,勾选“使程序集COM可见”
image.png
点击“生成”,勾选“为COM互操作注册”
image.png
点击"签名",勾选为程序集签名,并新建
image.png
在新建的窗口中输入密钥名,并取消勾选“使用密码保护密钥文件”
image.png
1.3在ComToJava.cs中输入代码,进行对字符串的加密和解密
image.png
image.png
1.4生成两个新的Guid,替换程序代码中的Guid
点击“工具-创建GUID”
image.png
1.5生成解决方案
image.png
image.png
二、利用java调用组件
2.1注册COM组件至系统
运行visual studio开发人员命令符(以管理员身份运行)
cd到ComToJava.dll所在的路径下(即Visual studio工程下的bin-Debug下)
image.png
执行:gacutil /i ComToJava.dll 添加dll至全局缓存
执行:regasm ComToJava.dll 注册dll至系统
image.png
运行regedit查看注册表
image.png
将附件jacob-1.19文件夹里的jacob-1.19-x64.dll放到目录C:\Windows\System32下
将附件jacob-1.19文件夹里的jacob-1.19-x86.dll放到目录C:\Windows\SysWOW64下
2.2用IDEA打开ComToJava工程
image.png
2.3导入jacob.jar
image.png
2.4配置jdk
image.png
2.5修改代码中的相应参数,运行程序(设置加密字符串和解密字符串)
image.png
运行程序,得到结果
image.png
3、总结与分析
image.png
只c#调用com生产解决方案的时候,出现Java无法调用的问题。
后来发现是生成解决方案时候出现了问题。
image.png
解决方案:以管理员身份运行visual studio,重新生成解决方案解决了这一问题。