VC 读写注册表

本文介绍了一种通过Windows注册表读取和写入服务器运行状态的方法。使用C++编程语言实现,包括创建注册表项、读取及设置服务器状态等功能。
//读服务器运行状态
int readRegImgSrvState(char** ppcRunState){
char *pcRunState;
HKEY hKEY;
LPCTSTR keyItem = "SOFTWARE\\Utan\\UtanImg\\";
unsigned char runState[] = {"0"};

long rv = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyItem, 0, KEY_READ, &hKEY);

if(rv != ERROR_SUCCESS){ //如果无法打开hKEY,则终止程序的执行
rv = RegCreateKeyEx(HKEY_LOCAL_MACHINE, keyItem,0,REG_NONE,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKEY,NULL);

if(rv != ERROR_SUCCESS) {
AfxMessageBox("错误:无法创建注册表项!");
return -1;
}

rv = ::RegSetValueEx(hKEY,"SrvRunState",NULL,REG_SZ,runState,2);

if(rv != ERROR_SUCCESS) {
AfxMessageBox("错误:无法设置有关的注册表信息");
return -1;
}
}else{
LPBYTE state = new BYTE[10];
DWORD type1 = REG_SZ;
DWORD dataLen = 10;

rv =::RegQueryValueEx(hKEY, "UtanImgSrvRunState", NULL, &type1, state, &dataLen);

if( rv != ERROR_SUCCESS){
AfxMessageBox("错误: 无法查询有关注册表信息!");
return -1;
}

pcRunState = new char[dataLen];
memmove(pcRunState,state,dataLen);
*ppcRunState = pcRunState;

//AfxMessageBox(pcRunState);
}

::RegCloseKey(hKEY);

return 0;
}

/**
* 写服务器运行状态
*/
int writeRegImgSrvState(const char* state){
HKEY hKEY;
LPCTSTR keyItem = "SOFTWARE\\Utan\\UtanImg\\";

long rv = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyItem, 0, KEY_READ|KEY_WRITE, &hKEY);

if(rv != ERROR_SUCCESS){ //如果无法打开hKEY,则终止程序的执行
rv = RegCreateKeyEx(HKEY_LOCAL_MACHINE, keyItem,0,REG_NONE,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKEY,NULL);

if(rv != ERROR_SUCCESS) {
AfxMessageBox("错误:无法创建注册表项!");
return -1;
}
}else{
int size = strlen(state) + 1;
unsigned char* data = new unsigned char[size]; //{"running"};
memmove(data,state,size);

printf("sizeof(data)=%d", sizeof(data));
rv = ::RegSetValueEx(hKEY,"UtanImgSrvRunState",NULL,REG_SZ,data,sizeof(data));

if(rv != ERROR_SUCCESS) {
printf("rv=%d",rv);
AfxMessageBox("错误:无法设置有关的注册表信息");
return -1;
}
}


::RegCloseKey(hKEY);

return 0;

}


参考:http://www.vckbase.com/document/viewdoc/?id=442

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值