win7 64位VC串口控件打不开解决方法
写了个MSComm的串口通信程序,在没有安装Vc的机器上没有办法运行。需要手动注册控件。 不过手动注册可以写成bat文件来完成。首先是建一个文件夹,64位系统将Windows/SysWOW64(32位系统 Windows/system32)下的Mscomm.srg, Mscomm32.ocx,Mscomm32.dep文件拷到文件夹中,然后查看 Mscomm32.dep的内容,在顶部加入“REGEDIT4”这一行,另存为1.reg,也放在该文件夹中。
然后在文件夹中建一个文本,写入
@echo off
copy .\msvcirt.dll %SYSTEMROOT%\SysWOW64
copy .\mfc42.dll %SYSTEMROOT%\SysWOW64
copy .\MSCOMM32.OCX %SYSTEMROOT%\SysWOW64
copy .\MSCOMM32.DEP %SYSTEMROOT%\SysWOW64
copy .\MSCOMM.SRG %SYSTEMROOT%\SysWOW64
Regsvr32 /s %SYSTEMROOT%\SysWOW64\MSCOMM32.OCX
regedit /s 1.REG
保存,更改后缀为bat。点击以管理者身份运行,就可以完成注册。
另有一个Win32 Application的方法,也学习一下,不过感觉还是bat文件跟简单方便,呵呵。
#include <windows.h>
#include <stdio.h>
#include <string.h>
void CPFile(char file);
void regsted();
void regOCX();
void CPFile(char file[],char tarpath[]) //将三个文件拷贝到系统目录
{
char tempsys[100];
char *r;
char *t;
r=tarpath;
t=tempsys;
strcpy(t,r);
char path[256];
char *p;
char *q;
GetModuleFileName(GetModuleHandle(NULL),path,sizeof(path));
p = path;
while(strchr(p,'\\'))
{
p = strchr(p,'\\');
p++;
}
*p = '\0';
p=strchr(path,'\0');
q=file;
strcpy(p,q);
p=strchr(tempsys,'\0');
*p = '\\';
p++;
q=file;
strcpy(p,q);
CopyFile(path,tempsys,FALSE);
}
void regsted() //将相关信息写入注册表
{
HKEY hKey;
DWORD dwDip;
LPBYTE owner_Get=new BYTE[80];
DWORD type_1=REG_SZ;
DWORD cbData_1=80;
long exist=RegQueryValueEx(HKEY_CLASSES_ROOT, "Licenses\\4250E830-6AC2-11cf-8ADB-00AA00C00905", NULL, &type_1, owner_Get, &cbData_1);
if(exist!=ERROR_SUCCESS)
{
long ret = RegCreateKeyEx(HKEY_CLASSES_ROOT,"Licenses\\4250E830-6AC2-11cf-8ADB-00AA00C00905",0l,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDip);
DWORD leng=37;
char key[37]="kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun";
LPBYTE lpb=new BYTE(37);
for(int i=0;i<37;i++)
lpb[i]=key[i];
long ret2 = RegSetValueEx(hKey,NULL,NULL,REG_SZ,lpb,leng);
}
}
void regOCX()//调用新进程 注册组件
{
char commandline[256];
char windowsdir[256];
char lastcommandline[257];
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
char OCXfile[50]=" \MSCOMM32.OCX ";
char REGfile[50]=" \regsvr32.exe ";
char *p,*q;
GetSystemDirectory(windowsdir, 256);
p=commandline;
q=windowsdir;
strcpy(p,q);
p=strchr(commandline,'\0');
q=OCXfile;
strcpy(p,q);
p=strchr(windowsdir,'\0');
q=REGfile;
strcpy(p,q);
p=commandline;
q=&lastcommandline[1];
strcpy(q,p);
lastcommandline[0]=' ';
// 启动regsvr32.exe作为子进程
BOOL ret = CreateProcess(windowsdir, lastcommandline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if(ret)
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
char sys[100];
char file1[20]="Mscomm32.ocx";
char file2[20]="Mscomm32.dep";
char file3[20]="Mscomm.srg";
GetSystemDirectory(sys,100);
CPFile(file1,sys);
CPFile(file2,sys);
CPFile(file3,sys);
regOCX();
regsted();
return 0;
}
win7 64位VC串口控件打不开解决方法相关推荐
- win7 64位系统安装office2013后图标显示不正常解决方法
#win7 64位系统安装office2013后图标显示不正常解决方法# 1 下载filetypesman,软件为绿色版,不用安装,可直接打开使用 2 查看Word.Excel.PPT的安装位置,后边 ...
- 在Win7 64位注册ActiveX控件
首先必须以管理员身份运行cmd.exe,即在cmd.exe右键选择以管理员身份运行. 目前共有两个存在网络盘的文件需要注册,一个dll,一个ocx. 开始时将两个文件都拷贝到c:\wind ...
- Win7 64位省级ie11后浏览器打不开解决办法
ie9升级为ie11后,浏览器点击打不开,一点反应也没有,后来从网上找到解决方案,记录下来,给大家分享下 进入注册表(运行regedit),找到 HKEY_CURRENT_USER\Software\ ...
- 计算机上没有找到服务was,win7 64位在计算机没找到was服务如何解决
win7系统凭借良好的兼容性和稳定性现在还受到很多用户欢迎,但使用久了之后难免会出现一些问题.例如有的网友就反映说自己的win7旗舰版电脑出现了,右键运行网站的时候,提示在计算机".&quo ...
- 64位系统使用Access数据库文件的彻底解决方法
64位系统使用Access数据库文件的彻底解决方法 最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是 ...
- 【前端】layui日期控件点击一闪而过解决方法
[前端]layui日期控件点击一闪而过解决方法 参考文章: (1)[前端]layui日期控件点击一闪而过解决方法 (2)https://www.cnblogs.com/nb123/p/12159683 ...
- datetimepicker 时间控件 1899年问题以及解决方法
datetimepicker 时间控件 1899年问题以及解决方法 参考文章: (1)datetimepicker 时间控件 1899年问题以及解决方法 (2)https://www.cnblogs. ...
- 64位系统使用Access 数据库文件的彻底解决方法
最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没 ...
- OCX控件的问题以及解决方法
不要问我ocx控件是什么,既然用这个大家都知道它是干嘛的,有问题直接解决问题.下面我一个一个列出问题以及解决方法. java方面: 本人不建议使用java去掉用ocx控件,访问里面的方法,而且导致无法 ...
最新文章
- 手写体数字识别+界面
- Linux 下Shell脚本删除过期文件
- 今天做了一个复杂的table
- [转]基于 aspnet 的自动合并输出js和css的解决方案
- 自写sonar 插件加载到sonar 服务中的展示信息
- MyBatis中Mapper代理方式
- 从BMW Vision iNEXT 看宝马如何进军自动驾驶
- java多线程信息共享 多线程管理
- Python内置函数sorted()和列表方法sort()的排序原理
- RedisSingleUtils 工具类
- Eclipse安装Lombok
- ip地址聚合后可用地址数 计算机网络技术三级考试 备考
- 多个数求最小公倍数详解!
- 支付宝基金自选管理系统Springboot + Vue 实现
- /sdcard目录详解
- 苹果手机连接电脑服务器传文件,还在羡慕苹果电脑隔空操作?windows的这个骚操作,3秒即可传文件...
- 物联网大咖华山论剑,MVP学院打造高端成长营
- Tableau磁盘空间满清除临时文件
- MAC格式化U盘/移动硬盘
- 上海交通大学计算机学院导师介绍,上海交通大学计算机科学与工程系导师教师师资介绍简介-张同珍副教授...