include stdio.h
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比聞喜網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式聞喜網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋聞喜地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
system ("cmd /c 命令行");
使用命令行修改注冊(cè)表的方法:
開始-運(yùn)行-cmd
鍵入reg /?
查看幫助.
比如
reg add "HKLM\Software" /v "abc" /t REG_SZ /d "def" /f的意思是在HKLM\Software項(xiàng)里增加值"abc"他的類型是"REG_SZ"數(shù)據(jù)是"def"并自動(dòng)覆蓋現(xiàn)有的值.
相應(yīng)c語句是
system ("cmd /c reg add \"HKLM\\Software\" /v \"abc\" /t REG_SZ /d \"def\" /f");
給你一個(gè)參考,
這個(gè)是往注冊(cè)表的開機(jī)啟動(dòng)項(xiàng)里添加開機(jī)啟動(dòng)的,(比如qq),只給你主要代碼。這個(gè)你可以百度,注冊(cè)表操作函數(shù)就那些,百度下,再看下msdn就會(huì)了》》
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);
希望對(duì)您有所幫助........
void WriteReg()
{
//test1:在根結(jié)點(diǎn)上創(chuàng)建子鍵
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標(biāo)志分別用于后面創(chuàng)建子鍵,后創(chuàng)建鍵值項(xiàng), {
//test2:在剛創(chuàng)建的子鍵(MySubKey)下再創(chuàng)建子鍵( MySubSubKey)
lrt = RegCreateKeyEx( hkey1, "MySubSubKey", 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_SET_VALUE, NULL, hkey2, dwdisposition );
//test3:在第一步創(chuàng)建的子鍵MySubKey下增加鍵值項(xiàng)
CString strValue="value of the MySubKey's valueItem";
lRtVal= RegSetValueEx( hkey1, "valItem1", 0, REG_SZ, (const byte *)(LPCTSTR)strValue , strValue.GetLength() + 1 );
//test4:在MySubSubKey下創(chuàng)建鍵值項(xiàng)
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 );
}
}
}
二,讀注冊(cè)表, 函數(shù):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;
}
}
}
讀寫注冊(cè)表要注意訪問標(biāo)志,常用的有:
1,可增加子鍵: KEY_CREATE_SUB_EY
2. 可增加鍵值項(xiàng):KEY_SET_VALUE
3.可查詢鍵值項(xiàng):KEY_QUERY_VALUE
要調(diào)用Windows API的RegOpenKeyEx(), RegSetValueEx(), RegSetValueEx()等函數(shù)。首先要確認(rèn)你的C編譯器支持調(diào)用Windows API.
舉例:
要自動(dòng)運(yùn)行"D:\Myprog\MyProgram.exe", 修改注冊(cè)表,在
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
中加一項(xiàng):
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); //關(guān)閉。
不可以,要修改注冊(cè)表,按:開始》運(yùn)行,輸入regedit進(jìn)入注冊(cè)表編輯器進(jìn)行修改。