前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序

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

作者头像
liulun
发布2022-05-09 11:20:11
4640
发布2022-05-09 11:20:11
举报
文章被收录于专栏:liulunliulun

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

做这篇文章主要是为了解决斯克迪亚的这个问题 实现自动判定是否有.Net框架,没有就安装.Net框架! 啥也不说了先来代码吧! 代码中注释还算多,如仍有问题请在此文下面的评论中提出

代码语言:javascript
复制
#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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档