写了个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串口控件打不开解决方法相关推荐

  1. win7 64位系统安装office2013后图标显示不正常解决方法

    #win7 64位系统安装office2013后图标显示不正常解决方法# 1 下载filetypesman,软件为绿色版,不用安装,可直接打开使用 2 查看Word.Excel.PPT的安装位置,后边 ...

  2. 在Win7 64位注册ActiveX控件

    首先必须以管理员身份运行cmd.exe,即在cmd.exe右键选择以管理员身份运行.    目前共有两个存在网络盘的文件需要注册,一个dll,一个ocx.    开始时将两个文件都拷贝到c:\wind ...

  3. Win7 64位省级ie11后浏览器打不开解决办法

    ie9升级为ie11后,浏览器点击打不开,一点反应也没有,后来从网上找到解决方案,记录下来,给大家分享下 进入注册表(运行regedit),找到 HKEY_CURRENT_USER\Software\ ...

  4. 计算机上没有找到服务was,win7 64位在计算机没找到was服务如何解决

    win7系统凭借良好的兼容性和稳定性现在还受到很多用户欢迎,但使用久了之后难免会出现一些问题.例如有的网友就反映说自己的win7旗舰版电脑出现了,右键运行网站的时候,提示在计算机".&quo ...

  5. 64位系统使用Access数据库文件的彻底解决方法

    64位系统使用Access数据库文件的彻底解决方法 最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是 ...

  6. 【前端】layui日期控件点击一闪而过解决方法

    [前端]layui日期控件点击一闪而过解决方法 参考文章: (1)[前端]layui日期控件点击一闪而过解决方法 (2)https://www.cnblogs.com/nb123/p/12159683 ...

  7. datetimepicker 时间控件 1899年问题以及解决方法

    datetimepicker 时间控件 1899年问题以及解决方法 参考文章: (1)datetimepicker 时间控件 1899年问题以及解决方法 (2)https://www.cnblogs. ...

  8. 64位系统使用Access 数据库文件的彻底解决方法

    最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没 ...

  9. OCX控件的问题以及解决方法

    不要问我ocx控件是什么,既然用这个大家都知道它是干嘛的,有问题直接解决问题.下面我一个一个列出问题以及解决方法. java方面: 本人不建议使用java去掉用ocx控件,访问里面的方法,而且导致无法 ...

最新文章

  1. 手写体数字识别+界面
  2. Linux 下Shell脚本删除过期文件
  3. 今天做了一个复杂的table
  4. [转]基于 aspnet 的自动合并输出js和css的解决方案
  5. 自写sonar 插件加载到sonar 服务中的展示信息
  6. MyBatis中Mapper代理方式
  7. 从BMW Vision iNEXT 看宝马如何进军自动驾驶
  8. java多线程信息共享 多线程管理
  9. Python内置函数sorted()和列表方法sort()的排序原理
  10. RedisSingleUtils 工具类
  11. Eclipse安装Lombok
  12. ip地址聚合后可用地址数 计算机网络技术三级考试 备考
  13. 多个数求最小公倍数详解!
  14. 支付宝基金自选管理系统Springboot + Vue 实现
  15. /sdcard目录详解
  16. 苹果手机连接电脑服务器传文件,还在羡慕苹果电脑隔空操作?windows的这个骚操作,3秒即可传文件...
  17. 物联网大咖华山论剑,MVP学院打造高端成长营
  18. Tableau磁盘空间满清除临时文件
  19. MAC格式化U盘/移动硬盘
  20. 上海交通大学计算机学院导师介绍,上海交通大学计算机科学与工程系导师教师师资介绍简介-张同珍副教授...

热门文章

  1. 计算机软考软件设计师2019试题,软考2019下半年软件设计师上午真题.pdf
  2. python生成器能用while吗_Python:在while循环中使用生成器
  3. 万字总结,体系化带你全面认识 Kube-Proxy IPVS 模式的工作原理
  4. Java中变量与常量
  5. 数据分析 - 9.MECE法(学习笔记)
  6. robotframework报错
  7. xr企业级应用在哪里_如何在XR中保持私密
  8. 亚马逊跟卖还能做吗?
  9. Machine Learning Basics(2)
  10. 5分钟使用Echarts轻松实现地图下钻