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

此项目是基于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、再编译工程,没有错误,大功告成。

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

  1. 以管理员权限运行程序需注意

    //以管理员权限运行程序,防止拖拽文件出现问题的代码 ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD); ChangeWindowMessageF ...

  2. 使用runas命令让域用户可以以管理员权限运行程序

    在域环境中,为了用户的信息安全着想,域用户一般没有管理员权限.但是有些软件必须用管理员身份运行才能正常使用,特别是财务类的一些软件.如果为了某些软件而放开管理员权限似乎又不太符合安全规定,此时,我们可 ...

  3. Objective-C MacOS以管理员权限运行程序

    在MacOS下很多操作是需要管理员权限的, 比如我们运行chmod,在命令行下可以使用sudo chmod来申请以管理员权限运行.但是使用XCode写的程序是不能使用sudo的. 需要自己写代码来申请 ...

  4. 命令行修改桌面快捷方式以管理员权限运行

    在做PC端打包的时候,发现程序在Win10 系统中安装后,双击桌面快捷方式,不能正常访问安装目录中的一些文件,后来发现必须以管理员权限运行,这个就有点糟心了,程序交付给客户之后,总不能每次都让客户选中 ...

  5. 如何在Windows 11中以管理员身份运行程序:10种方式可以选择

    如何在Windows 11中以管理员身份运行程序 为防止对操作系统进行未经授权的更改,Windows 11应用程序和游戏默认以标准权限启动,但某些程序(如安全软件)需要管理员权限才能正确运行或执行特定 ...

  6. C# 普通权限运行程序\非管理员运行\降低权限运行

    一.目的与实际 1.VS设置管理员权限运行程序后,发现调用powershell命令或程序需要普通权限即可,Administrator权限反而错. 2.网上搜索关键字,大部分都是怎么使用管理员权限运行. ...

  7. xp无法使用计算机管理员权限,xp无法无法使用管理员权限运行软件的解决步骤...

    在使用一些不常用软件的时候,我们经常需要管理员的权限,因为只有管理员才有足够的权限来运行系统上的一些东西,可是在xp系统上有时候无法使用管理运行一些东西,怎么办呢,如图所示要怎么办? 小编终于找到了一 ...

  8. 请求以管理员权限运行win+r查询的程序

    1 win+r 打开运行窗口 2 ctrl + shift + enter 请求以管理员权限运行程序

  9. 设置Win10批处理bat文件默认以管理员权限运行

    要使bat文件默认以管理员权限运行有多种方法: 在该bat文件开头添加某些代码,实现该bat文件默认以管理员权限运行. 通过命令行修改系统设置,使得cmd默认进入管理员模式. 通过创建快捷方式,设定快 ...

最新文章

  1. C++ STL的sort 函数 以及自定义的比较函数
  2. NXT节点搭建(二)环境搭建
  3. java核心(十五):List、Set、Map功能分析
  4. java数独最快解_[分享]数独的JAVA解法
  5. 声明对象_计算机各语言数据类型及对象声明之区别
  6. 深入解读 MySQL 架构设计原理,剖析存储架构选型核心
  7. C语言 关键字const的作用
  8. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
  9. js时间格式化 YYYY/MM/DD HH:MM:SSS
  10. C#开根号函数:math.pow()函数
  11. 机器人导航,人工势场法的地图导航规划
  12. Pre-commit:如何使用 husky、lint-staged和prettier优化你的项目
  13. android基本布局-TableLayout_表格布局
  14. Matlab 各种画图函数用法
  15. 计算机的程序代码是储存在什么中的,计算机的一切程序和数据都是以什么情势贮存?...
  16. rem 与 px 换算关系
  17. 955.WLB 不加班公司名单!再新增 5 家公司!
  18. 在VMware上安装win10
  19. InvalidArgumentError: Can not squeeze dim[1], expected a dimension of 1, got 10 for metrics/acc/
  20. c#filestream与streamwriter用法

热门文章

  1. ArcEngine编辑模块——移动单个要素的实现方法
  2. 电脑突然间变卡的解决办法
  3. dhtmlxgrid导出的js_dhtmlx之dhtmlXGrid显示数据
  4. 复印机的工作过程大致如下
  5. Linux·信号量全解
  6. 容联云通讯php短信接口,短信查询接口_开发文档_容联云通讯
  7. table 复杂表头
  8. bat 批处理 B站缓存视频转成 .mp4格式
  9. 随机过程基础3--宽平稳随机过程的谱分析
  10. win10-2016企业版长期服务版激活