.bat文件注册.ocx+win8开机获得管理员权限+运行程序自动注册.ocx

本文主要是针对做的项目遇到的问题写的东西。


此项目是基于VS2010开发,C++编写算法部分,界面部分为C#,这就需要将C++的部分做成ActiveX控件,拖到C#界面中。我们知道,ActiveX控件形式基本为.dll文件与.ocx文件。这样的文件若想被C#调用前提是要在本地注册。


问题是,之前师兄开发是用的WIN7 32位的,这没有任何问题,我接管这个项目之后,我的电脑为WIN8 64位系统,注册.ocx问题就出现了。


1、如何在WIN8系统中注册.ocx文件


这个比较坑,网上一般教程针对的是一个独立的.ocx注册。即只需要将.ocx拷贝到系统目录C:\Windows\System32(64位)、或者是C:\Windows\SysWOW64(32位)。然后在此路径中找到cmd.exe,以管理员的身份运行,注册即可。


然而,很多.ocx文件不是孤立的,它还依赖很多.lib库,如果把这些.lib文件也拷过去注册,当然没问题。但是每次都这样很麻烦。所以就想可不可以不把.ocx拷贝到系统目录直接注册。答案可行,具体操作过程:

(1)、在C:\Windows\SysWOW64文件夹下,找到cmd.exe,右键以管理员身份运行。


进入.ocx所在的文件夹:


用regsvr32注册.ocx控件


这样就注册成功了。

2、编写.bat自行运行注册.ocx。

但是这样的结果就是,如果.ocx是你自己正在开发的,你一直在修改它,每次调试,你都得要重新手动注册一次,相当麻烦,而且是要运行cmd命令注册。这样就可以转到使用.bat自行注册。使用.bat注册需要编写.bat。先建一个.txt,然后改后缀名,右键编辑。贴入代码:

@echo off
cd /d %~dp0  
if "%processor_architecture%"=="x86" goto REG32  
if "%processor_architecture%"=="AMD64" goto REG64  
:REG32  
regsvr32 "Med-Image Analyzer.ocx"   
goto exit  
:REG64
regsvr32 "Med-Image Analyzer.ocx"    
goto exit  
:exit  

把.bat文件放在.ocx所在目录,好了,我们不需要每次都运行cmd注册了,可是问题又出来,每次编译工程都会报错。报错内容是:


泪崩,以我调试的经验教训,出现注册失败基本是因为权限不够,就是说,虽然我运行了.bat注册,但是不是以管理员身份运行的。所以我需要再以管理员身份运行.bat才能成功。也是醉了。换句话说我还是没有实现全自动注册.ocx而不出现错误。

3、WIN8系统开机即获得管理员权限。

既然我不是以管理员身份运行的.bat,那么我每次编译工程的时候如果.bat可以自动获得管理员权限问题就可以解决了。

由此我联想到之前师兄在WIN7 32位系统下也不需要每次手动运行.bat。网上查了相关资料。可以使WIN8系统开机获得管理员权限。

WIN+R输入gpedit.msc进入本地组策略管理器。


然后,计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项,找到对应的“用户账户控制:以管理员批准模式运行所有管理员”将其禁用,重启计算机即可。


4、.bat获得权限了,可能还会出现刚才的问题,没注册成功,这就需要对工程属性设置了。

找到属性页。在链接项中看到两个选项,一个是Register out ,设为YES,一个是Per-user Redirection.设为NO。



5、再编译工程,没有错误,大功告成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值