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

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

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

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

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

img_1c53668bcee393edac0d7b3b3daff1ae.gif 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 ;
}

 

目录
相关文章
|
11天前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
15 2
|
28天前
|
算法 Java 中间件
C#/.NET/.NET Core优质学习资料,干货收藏!
C#/.NET/.NET Core优质学习资料,干货收藏!
|
28天前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
28天前
|
人工智能 开发框架 算法
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
|
28天前
|
缓存 开发框架 算法
C#/.NET这些实用的编程技巧你都会了吗?
C#/.NET这些实用的编程技巧你都会了吗?
|
28天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
28天前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
|
28天前
|
人工智能 算法 C#
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
|
28天前
|
JSON 测试技术 C#
C#/.NET/.NET Core优秀项目框架推荐榜单
C#/.NET/.NET Core优秀项目框架推荐榜单
下一篇
无影云桌面