C++ 设置Java 环境变量完整的例子
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <cstdio>
#include <string>
#include <tchar.h>
using namespace std;
void setValue(HKEY hRootKey,char *key,char plusPath[],char *key_value,DWORD dwType);
void main()
{
// Java 环境变量路径
// char plusPath[] = ";C:\\software\\develop\\eclipse49\\plus\\jdk1.8.0_191\\bin";
char plusPath[] = ";D:\\AUTO_Uninstaller_x64_8.8.1\\bin\\jre1.8.0_191\\bin";
// 根路径
HKEY hRootKey=HKEY_LOCAL_MACHINE;
// 系统环境变量
// HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
char *key = "System\\CurrentControlSet\\Control\\Session Manager\\Environment";
// 需要修改的值
char *key_value="Path";
// key_value的数据类型
DWORD valueType = REG_EXPAND_SZ;
// 调用修改注册表值的函数
setValue(hRootKey,key,plusPath,key_value,valueType);
// 测试是否修改成功
cout << "====================================================================";
cout << "\n";
system("java -version");
system("pause");
}
void setValue(HKEY hRootKey,char *key,char plusPath[],char *key_value,DWORD dwType)
{
HKEY hKey;
] = {};
DWORD dwSize = sizeof(data);
DWORD dwDisposition=REG_OPENED_EXISTING_KEY;
//如果不存在就创建
LONG resulte=RegCreateKeyExA(hRootKey,key,,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);
if (resulte != ERROR_SUCCESS)
{
//MessageBox(NULL, _T("打开注册表失败"), _T("提示"), MB_OK);
cout << "打开注册表失败 [" << key <<"]";
cout << "\n";
}
else
{
if (dwDisposition == REG_OPENED_EXISTING_KEY)
{
//MessageBox(NULL, _T("打开一个存在的注册表项"), _T("提示"), MB_OK);
cout << "打开注册表项 [" << key <<"]";
cout << "\n";
}
else if (dwDisposition == REG_CREATED_NEW_KEY)
{
//MessageBox(NULL, _T("新建一个注册表项"), _T("提示"), MB_OK);
cout << "新建注册表项 [" << key <<"]";
cout << "\n";
}
}
// 打开该key,在程序末尾关闭
LONG OpenKey_nError = RegOpenKeyExA(HKEY_LOCAL_MACHINE, key, , KEY_READ|KEY_WRITE, &hKey);
if (OpenKey_nError==ERROR_FILE_NOT_FOUND)
{
cout << "Creating registry key: " << key << endl;
OpenKey_nError = RegCreateKeyExA(hRootKey, key, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, &hKey, NULL);
}
if (OpenKey_nError)
cout << "Error: " << OpenKey_nError << " Could not find or create " << key << endl;
// 查询该值
LONG QueryValue_nError = RegQueryValueExA(hKey, key_value, NULL, &dwType, (LPBYTE)data, &dwSize);
if (QueryValue_nError)
cout << "Error: " << QueryValue_nError << " Could not set registry value: " << key_value << endl;
int length=strlen(plusPath) + strlen(data);
string data_str=data;
string plusPath_str=plusPath;
string plus_str;
string::size_type idx;
idx=data_str.find(plusPath_str);
if(idx == string::npos ){//不存在
char *environment = new char[length];
plus_str=data_str+plusPath_str;
strcpy(environment, plus_str.c_str());//
cout << environment;
cout << "\n";
LONG SetValue_nError = RegSetValueExA(hKey, key_value, NULL, REG_EXPAND_SZ, (const unsigned char *)environment, strlen(environment));
if (SetValue_nError)
cout << "Error: " << SetValue_nError << " Could not set registry value: " << key_value << endl;
}else{
cout << "已存在 [" << plusPath << "]";
cout << "\n";
}
DWORD dwResult;
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, ,LPARAM(_T(, &dwResult);//广播立即执行
LONG QueryValue2_nError = RegQueryValueExA(hKey, key_value, NULL, &dwType, NULL, &dwSize);
if (QueryValue2_nError==ERROR_FILE_NOT_FOUND){
// The value will be created and set to data next time SetVal() is called.
}else if (QueryValue2_nError)
cout << "Error: " << QueryValue2_nError << " Could not get registry value : " << key_value << endl;
RegCloseKey(hKey);
}
C++ 设置Java 环境变量完整的例子的更多相关文章
- windows上自动设置java环境变量的脚本
近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要设置java环境变量,java环境变量要设置JAVA_HOME,Path,CLASSPATH三个值,每次配置查百度复制粘贴都很麻 ...
- 【转】windows上自动设置java环境变量的脚本
转载:http://www.cnblogs.com/flowwind/p/4066146.html 近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要 设置java环境变量,ja ...
- Linux中如何设置java环境变量
这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径 查看java执行路径 配置java环境变量 java的安装 ...
- 利用脚本,一键设置java环境变量(默认安装路径)
Windows一键设置Java环境变量 右击以管理员方式运行,注意自行更改JAVA_HOME目录文件安装目录. JDKSetting.bat @echo off color 0a echo.----- ...
- 为什么要设置Java环境变量(windows)
在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...
- 为什么要设置Java环境变量(详解)
关于java环境变量配置讲解: 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下 ...
- Linux学习11-CentOS如何设置java环境变量
前言 之前用yum安装的java,现在想添加环境变量,yum安装的java路径在哪呢?如何找到安装的路径,把jdk添加到环境变量. 本篇详细讲解linux系统设置java环境变量 找到jdk路径 之前 ...
- 利用vbs设置Java环境变量
每次PC重装后,又要设定Java环境变量,向我这种不爱记得人,老是要去找设定内容 感觉设置环境变量还真是比较麻烦,我是希望可以做成点击一下就ok的,这样重装系统就不用那么麻烦了, 但是考虑到通用性,为 ...
- 为什么要设置Java环境变量(详解)[转]
从大二开始接触Java,之后是断断续续的学习.大三真正开始Java之旅,估计大部分初学者在学Java时被Java的环境变量搞的晕头转向,虽然找到了正确设置环境变量的方式,但其中的原因一知半解,设置压根 ...
随机推荐
- PSP(3.30——4.5)以及周记录
1.PSP 3.30 12:00 13:00 10 50 Account前端 A Y min 13:00 13:20 0 20 站立会议 A Y min 15:15 17:00 20 85 Accou ...
- Linux运维之docker虚拟化部署nginx
一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) C. The Tower is Going Home(思维+双指针)
https://codeforces.com/contest/1075/problem/C 题意 一个宽为1e9*1e9的矩阵中的左下角,放置一个车(车可以移动到同一行或同一列),放置一些墙,竖的占据 ...
- CEdit控件[转]
1.CButton.CEdit等从CWnd继承了重要的功能: 使用CWnd::SetWindowText和CWnd::GetWindowText可以设置和获得窗口或控件上的文本.CWnd::SetFo ...
- 先加载js 后载控件
可以使用如下 $(document).on('click','.classname',function(){});
- 学习fortran77基础语法
Program ParamaterDefine Implicit None C FORTRAN变量名和关键字不区分大小写.但调用外部函数的话,需要在编译选项里指定 c 大小写等选项 因为链接器是区分大 ...
- BZOJ 3259 [Sdoi2014]数表 (莫比乌斯反演 + 树状数组)
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2321 Solved: 1187[Submit][Status ...
- 关于memcached
代振军 http://www.cnblogs.com/daizhj/archive/2009/03/23/1386652.html http://www.cnblogs.com/daizhj/arch ...
- 浮点型转整数型进行计算 - 移动GIS设备硬件的原因
在ArcGIS9.1之前桌面版ArcGIS都是采用整数存储的,是为了效率,将浮点型转为整数型存储,但9.2之后随着硬件的提升,浮点型的效率已经得到提高了,所以不再转换.但移动GIS设备还是要转整数型. ...
- POJ3723--Conscription(MST)WRONG
Description Windy has a country, and he wants to build an army to protect his country. He has picked ...