C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序-阿里云开发者社区

开发者社区> xland> 正文

C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序

简介: 说实在的我的C++功底太浅,希望达人不要笑话 做这篇文章主要是为了解决斯克迪亚的这个问题实现自动判定是否有.Net框架,没有就安装.Net框架!啥也不说了先来代码吧!代码中注释还算多,如仍有问题请在此文下面的评论中提出 代码 #include #include #include usi...
+关注继续查看

说实在的我的C++功底太浅,希望达人不要笑话

做这篇文章主要是为了解决斯克迪亚的这个问题
实现自动判定是否有.Net框架,没有就安装.Net框架!

啥也不说了先来代码吧!
代码中注释还算多,如仍有问题请在此文下面的评论中提出

img_405b18b4b6584ae338e0f6ecaf736533.gif代码

#include <stdio.h>
#include
<windows.h>
#include
<iostream>

using namespace std;

int CheckReg()
{
LPSTR regeditStr
= "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5";//现在能判断是不是3.5,但不确定是不是3.5 SP1
HKEY ck;//注册表的键
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,regeditStr,0,KEY_ALL_ACCESS,&ck))//检查注册表是否存在这个键值
{
RegCloseKey(ck);
//关闭注册表
cout<<"他的系统里安装了.net3.5,可以执行你的安装包了"<<endl;
return 1;
}
else
{
cout
<<"他的系统里没安装.net3.5,现在开始安装!"<<endl;
return 0;
}
}

int StartExe(LPSTR path)
{
STARTUPINFO stinfo;
//当创建新进程时,将使用该结构的有关成员
ZeroMemory((void*)&stinfo, sizeof(STARTUPINFO));//把stinfo置空
PROCESS_INFORMATION ProcessInfo;//进程信息的数据结构
stinfo.cb = sizeof(STARTUPINFO);//包含STARTUPINFO结构中的字节数
stinfo.dwFlags = STARTF_USESHOWWINDOW;//显示窗口
stinfo.wShowWindow = SW_SHOW;//该应用程序的第一个重叠窗口应该如何出现
if(!CreateProcess(path,path,NULL,NULL,false,0,NULL,NULL,&stinfo,&ProcessInfo))
{
//DWORD dwRet = GetLastError();//启动失败,获取异常值
return 0;
}
else
{
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
//等待安装完成,此方法为阻塞方法!
return 1;
}
}

int StartCheck()
{
LPSTR sNetfile
= "C:\\Program Files\\NetMeeting\\conf.exe"; //你的.net安装包的路径
LPSTR sExefile = "C:\\Program Files\\Google\\Google Pinyin 2\\GooglePinyinSettingWizard.exe"; //你的程序的路径
if(CheckReg())
{
StartExe(sExefile);
cout
<<"安装完成"<<endl;
}
else
{
StartExe(sNetfile);
StartCheck();
}
return 1;
}

int main(void)
{
StartCheck();
char a;
cin
>>a;
return 0;
}

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#操作注册表
下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。准备工作:1:要操作注册表,我们必须要引入必要的命名空间: using Microsoft.
872 0
RedisManager使用手册(五)-- 自定义Redis安装包
RedisManager物理机安装包的构建和Docker镜像的构建
1411 0
查看.net frameword版本
原文:查看.net frameword版本  官方答案。 具体步骤如下: 1.打开注册表(Win+R,输入regedit); 2.输入注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP,当前只能查看.net framework 1-4; 3.如果要查看.net framework 4.5往后的版本,输入路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full,如果不存在,说明没有安装。
763 0
注册表读写操作(模块)
*************************************************************************'**模 块 名:RegWork'**创 建 ...
330 0
使用DotNetNuke(DNN) Startkit 4.7(及以上版本)安装无法完成问题的解决方法
最近决定使用DNN Startkit 做些开发,却发现下载DNN 4.8.2 Startkit安装后,生成的网站总是无法完成安装,一到数据库安装那里就停下来,只有进度条滚动,不执行安装的Script。 如图: 几经周折,最终发现自己犯了了一个很愚蠢的错误-没有仔细阅读说明。
671 0
+关注
xland
上市公司研发部门经理 管理着40个人以上的技术团队; 服务过诸多大型客户; 为很多知名开源项目提交过代码; 开发过几十万用户的APP; 技能:C++/.NET/JS/架构
329
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载