c 语言获取注册代理信息 #include #include int main(void){ char data[1024];//存放获取结果集 long result,open_result;//查询的结果 DWORD dataType,dword_result; //要读取的注册表的键值 HKEY_CURRENT_USER char regnam
#includejni 对应的c 语言的实现#include int main(void){ char data[1024];//存放获取结果集 long result,open_result;//查询的结果 DWORD dataType,dword_result; //要读取的注册表的键值 HKEY_CURRENT_USER char regname [] = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; HKEY hKey; open_result = RegOpenKey(HKEY_CURRENT_USER,regname,&hKey);//打开键 if(open_result!=ERROR_SUCCESS){ printf("%s\n","打开键失败"); return 1; } //dataType 1 字符串 4 DWORD DWORD datasize = sizeof(data); result = RegQueryValueEx(hKey,"ProxyServer",NULL,&dataType,(LPBYTE)data,&datasize);//提取内容 if(result!=ERROR_SUCCESS){ printf("%s\n","获取内容失败"); return 1; } printf("dataType:%d\n",dataType); printf("datasize:%d\n",datasize); if(dataType==4&&datasize==4){ memcpy(&dword_result, (DWORD*)data, datasize); printf("dword_result:%d\n",dword_result); } // ProxyEnable 是否使用代理,1 使用代理,0 不使用 //不使用代理的地址 ProxyOverride //代理服务器的信息 ProxyServer printf("%s\n",data); RegCloseKey(hKey); return 0; }
#include "com_shxzhlxrr_Register.h" #includejni对应的java代码#include #include JNIEXPORT jstring JNICALL Java_com_shxzhlxrr_Register_getProxySetting (JNIEnv * env, jclass _this, jstring keyname){ //声明错误信息提示 const char open_key_error [] = "fail_open_key_error"; const char get_val_error [] = "fail_get_val_error"; //声明变量 char regname [] = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; const char * key_name ;//用来存放传入的字符串 DWORD dataType,dword_result; char data [1024]; char dword_val[4]; HKEY hKey; //-----------------------变量的声明结束--------------------------- key_name = env->GetStringUTFChars(keyname, NULL);//把传入的字符串转换成原生的类型 if(RegOpenKey(HKEY_CURRENT_USER,regname,&hKey)!=ERROR_SUCCESS){ RegCloseKey(hKey); return env->NewStringUTF(open_key_error); } //dataType 1 字符串 4 DWORD DWORD datasize = sizeof(data); if(RegQueryValueEx(hKey,key_name,NULL,&dataType,(LPBYTE)data,&datasize)!=ERROR_SUCCESS){ RegCloseKey(hKey); return env->NewStringUTF(get_val_error); } //释放资源 RegCloseKey(hKey); //free(key_name); //如果是DWORD类型的,进行转换 if(dataType==4&&datasize==4){//转换有问题 //printf("get is number type value!\n"); memcpy(&dword_result, (DWORD*)data, datasize); //printf("number value :%d,%s!\n",dword_result,(char*)dword_result); //memcpy(dword_val, (char*)&dword_result, 4); _ultoa(dword_result,dword_val,10); return env->NewStringUTF(dword_val); }else{ //printf("get is string type value!\n"); return env->NewStringUTF(data); } }
package com.shxzhlxrr;
/**
* 注册表信息
* @author zxr
* 2017年12月30日 下午4:07:55
*/
public class Register {
public static final String PROXY_SERVER = "ProxyServer";//代理服务器
public static final String PROXY_OVERRIDE = "ProxyOverride";//不使用代理的路径
public static final String PROXY_ENABLE = "ProxyEnable";//是否启用代理 1 启用 0 不启用
static {
System.loadLibrary("Register");
}
public static native String getProxySetting(String reg_name);
public static void main(String[] args) {
System.out.println(Register.getProxySetting("ProxyServer"));
System.out.println(Register.getProxySetting("ProxyOverride"));
System.out.println(Register.getProxySetting("ProxyEnable"));
String flag = Register.getProxySetting("ProxyEnable");
if("0".equals(flag)){
System.out.println("没有启用");
}
}
}
