include stdio.h
创新互联建站-专业网站定制、快速模板网站建设、高性价比闻喜网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式闻喜网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖闻喜地区。费用合理售后完善,十载实体公司更值得信赖。
system ("cmd /c 命令行");
使用命令行修改注册表的方法:
开始-运行-cmd
键入reg /?
查看帮助.
比如
reg add "HKLM\Software" /v "abc" /t REG_SZ /d "def" /f的意思是在HKLM\Software项里增加值"abc"他的类型是"REG_SZ"数据是"def"并自动覆盖现有的值.
相应c语句是
system ("cmd /c reg add \"HKLM\\Software\" /v \"abc\" /t REG_SZ /d \"def\" /f");
给你一个参考,
这个是往注册表的开机启动项里添加开机启动的,(比如qq),只给你主要代码。这个你可以百度,注册表操作函数就那些,百度下,再看下msdn就会了》》
hkey
hkey;
tchar
childkey[256]=text("software\\microsoft\\windows\\currentversion\\run");
tchar
keyvalue[256]=text("c:\\program
files\\tencent\\qq\\bin\\qq.exe");
tchar
keyname[256]="qq";
if(error_success!=regopenkeyex(hkey_local_machine,childkey,0,key_create_sub_key,hkey))
{
messagebox(null,text("failed
to
open
the
key
..."),text("failed!!!"),mb_ok);
}
if(error_success==regsetvalue(hkey_local_machine,childkey,reg_sz,keyvalue,strlen(keyvalue)))
{
messagebox(null,text("sucess
to
write
a
value
into
the
currentversion
.
"),text("sucess!!!"),mb_ok);
}
regclosekey(hkey);
希望对您有所帮助........
void WriteReg()
{
//test1:在根结点上创建子键
CString strSubKey= "MySubKey";
HKEY hkey1, hkey2;
long lrt, lRtVal;
DWORD dwdisposition= REG_CREATED_NEW_KEY;
if( ERROR_SUCCESS == RegCreateKeyEx( HKEY_CURRENT_USER, strSubKey, 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_SET_VALUE, NULL, hkey1, dwdisposition ) )
//注:KEY_CREATE_SUB_KEY | KEY_SET_VALUE标志分别用于后面创建子键,后创建键值项, {
//test2:在刚创建的子键(MySubKey)下再创建子键( MySubSubKey)
lrt = RegCreateKeyEx( hkey1, "MySubSubKey", 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_SET_VALUE, NULL, hkey2, dwdisposition );
//test3:在第一步创建的子键MySubKey下增加键值项
CString strValue="value of the MySubKey's valueItem";
lRtVal= RegSetValueEx( hkey1, "valItem1", 0, REG_SZ, (const byte *)(LPCTSTR)strValue , strValue.GetLength() + 1 );
//test4:在MySubSubKey下创建键值项
if( lrt == ERROR_SUCCESS )
{
strValue="value of the MySubSubKey's valueItem";
lRtVal= RegSetValueEx( hkey2, "valItem1", 0, REG_SZ, (const byte *)(LPCTSTR)strValue , strValue.GetLength() + 1 );
}
}
}
二,读注册表, 函数:RegOpenKeyEx, RegQueryValueEx
void ReadReg()
{
//test1,读取MySubSubKey下的valItem1值
CString strSubkey= "MySubKey\\MySubSubKey";
HKEY hKey;
char szValue[100]={0};
if( ERROR_SUCCESS == RegOpenKeyEx( HKEY_CURRENT_USER, strSubkey, 0, KEY_QUERY_VALUE, hKey ) )
{
DWORD dwType= REG_SZ;
unsigned long nSize= sizeof(szValue) - 1;
if( ERROR_SUCCESS == RegQueryValueEx( hKey, "valItem1", NULL, dwType, (byte *)szValue, nSize ) )
{
int a=0;
}
}
}
读写注册表要注意访问标志,常用的有:
1,可增加子键: KEY_CREATE_SUB_EY
2. 可增加键值项:KEY_SET_VALUE
3.可查询键值项:KEY_QUERY_VALUE
要调用Windows API的RegOpenKeyEx(), RegSetValueEx(), RegSetValueEx()等函数。首先要确认你的C编译器支持调用Windows API.
举例:
要自动运行"D:\Myprog\MyProgram.exe", 修改注册表,在
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
中加一项:
RunMyProg="D:\Myprog\MyProgram.exe"
#include windows.h
static char subkey[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
static char vname[] = "RunMyProg";
static char exefile[] = "D:\\Myprog\\MyProgram.exe";
ULONG dType = REG_SZ, len = 0;
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_SET_VALUE|KEY_QUERY_VALUE,hKey);//打开。
if (RegQueryValueEx(hKey, vname, 0, dType, NULL, len)) { //如果没有RunMyProg,
RegSetValueEx(hKey, vname, 0, REG_SZ, exefile, strlen(exefile)+1); //就加上。
}
RegCloseKey(hKey); //关闭。
不可以,要修改注册表,按:开始》运行,输入regedit进入注册表编辑器进行修改。