搞了一天,翻了也不知道多少遍msdn,终于看懂了几个函数。
RegOpenKeyEx 打开注册表,并获取键值 填充HKEY
RegEnumKeyEx 枚举某个目录下所有子建,并填充HKEY
RegOpenKeyEx 获取某个键的值,
RegSetValueEx 设置某个键的值
附上自己搞了一天的程序:
没有注释,呵呵,自己看看,查下msdn就可以理解了
Code
// regeditvalue.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HKEY m_key,m_key2;
WCHAR m_name[200]={0},uninstall[200]={0};
DWORD m_namelen=200;
DWORD mIndex=0,mCount=0;
WCHAR m_KeyName[200]={0};
DWORD m_KeyNamelen=200;
DWORD m_attr=REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_NONE|REG_SZ;
WCHAR m_SubKey[255]=L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
//long erl=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCWSTR)m_SubKey,0,KEY_ALL_ACCESS,&m_key);
/*if(RegOpenKeyEx(HKEY_CURRENT_USER,(LPCWSTR)"Software\\Zeal SoftStudio\\AskPro FTP\\LastTime",0, KEY_ALL_ACCESS, &m_key)==ERROR_SUCCESS)
{
}*/
//DWORD m_Error=::GetLastError();
//cout<<erl<<endl;
//cout<<m_Error;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_SubKey,0,KEY_ALL_ACCESS,&m_key)==ERROR_SUCCESS)
{
while(RegEnumKeyEx(m_key,mIndex,m_name,&m_namelen,0,NULL,NULL,0)!=ERROR_NO_MORE_ITEMS)
{
mIndex++;
wcscpy(uninstall,m_SubKey);
//strcpy(uninstall,m_SubKey);
//strcat(uninstall,"\\");
wcscat(uninstall,L"\\");
//strcat(uninstall,m_name);
wcscat(uninstall,m_name);
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,uninstall,0,KEY_ALL_ACCESS,&m_key2)==ERROR_SUCCESS)
{
RegQueryValueEx(m_key2,L"DisplayName",0,&m_attr,LPBYTE(m_KeyName),&m_KeyNamelen);
wcout<<m_KeyName<<endl;
mCount++;
}
RegCloseKey(m_key2);
memset(m_KeyName,0,200);
}
}
RegCloseKey(m_key);
return 0;
}
// regeditvalue.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HKEY m_key,m_key2;
WCHAR m_name[200]={0},uninstall[200]={0};
DWORD m_namelen=200;
DWORD mIndex=0,mCount=0;
WCHAR m_KeyName[200]={0};
DWORD m_KeyNamelen=200;
DWORD m_attr=REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_NONE|REG_SZ;
WCHAR m_SubKey[255]=L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
//long erl=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCWSTR)m_SubKey,0,KEY_ALL_ACCESS,&m_key);
/*if(RegOpenKeyEx(HKEY_CURRENT_USER,(LPCWSTR)"Software\\Zeal SoftStudio\\AskPro FTP\\LastTime",0, KEY_ALL_ACCESS, &m_key)==ERROR_SUCCESS)
{
}*/
//DWORD m_Error=::GetLastError();
//cout<<erl<<endl;
//cout<<m_Error;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_SubKey,0,KEY_ALL_ACCESS,&m_key)==ERROR_SUCCESS)
{
while(RegEnumKeyEx(m_key,mIndex,m_name,&m_namelen,0,NULL,NULL,0)!=ERROR_NO_MORE_ITEMS)
{
mIndex++;
wcscpy(uninstall,m_SubKey);
//strcpy(uninstall,m_SubKey);
//strcat(uninstall,"\\");
wcscat(uninstall,L"\\");
//strcat(uninstall,m_name);
wcscat(uninstall,m_name);
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,uninstall,0,KEY_ALL_ACCESS,&m_key2)==ERROR_SUCCESS)
{
RegQueryValueEx(m_key2,L"DisplayName",0,&m_attr,LPBYTE(m_KeyName),&m_KeyNamelen);
wcout<<m_KeyName<<endl;
mCount++;
}
RegCloseKey(m_key2);
memset(m_KeyName,0,200);
}
}
RegCloseKey(m_key);
return 0;
}