Ù×÷¾Í·Ç³£µÄ¼òµ¥ÁË£¬ÏÂÃæÎÒ¾ÍÒÔÒ»¸öʵÀýÀ´ËµÃ÷TRegistryÀàµÄÓ÷¨¡£
Ê×ÏÈ£¬ÏȽéÉÜÒ»ÏÂTRegistryµÄÊôÐԺͷ½·¨£º
TRegistryÀàÒ»¹²ÓÐËĸöÊôÐÔ¡£
| ÊôÐÔ |
ÀàÐÍ |
ÃèÊö |
| CurrentKey |
int |
°üº¬µ±Ç°¼üÖµµÄÖµ£¬µ«ËüµÄÒâ˼²»Ì«ºÃ¶®£¬ËùÒÔ²»Ì«³£Óà |
| RootKey |
int |
µ±Ç°¼üÖµµÄ¸ù¼ü£¬BCB¶¨ÒåÓÐö¾Ù³£Á¿£ºHKEY_CURRENT_USER¡¢HKEY_CLASSES_ROOT¡¢HKEY_LOCAL_MACHINE¡¢HKEY_USERS¡¢HKEY_CURRENT_CONFIG¡¢HKEY_DYN_DATA¡¢HKEY_USERS¡£·Ö±ð¶ÔӦע²á±íÖÐÏàÓ¦µÄÖ÷¼ü¡£Éú³ÉÒ»¸öTRegistryÀàµÄʵÀýʱRootKyeȱʡֵΪHKEY_CURRENT_USER |
| CurrentPath |
AnsiString |
µ±Ç°¼üÖµµÄÎı¾ÃèÊö£¬\HKEY_CURRENT_USER\Software\BorlandµÄCurrentPath="Software\Borland"£¬¶øRootKey=HKEY_CURRENT_USER |
| LazyWrite |
bool |
ֵΪtrue£ºÖ»Òª¹Ø±ÕÒ»¸ö¼ü£¬¾ÍÁ¢¼´·µ»ØÓ¦ÓóÌÐò¡£ÖµÎªfalse£º±ØÐëдÍê×¢²á±íºó²Å·µ»Ø¡£ÆäȱʡֵΪtrue¡£ |
TRegistryÀàµÄ·½·¨±È½Ï¶à£¬ÔñÆä³£ÓõļòҪ˵Ã÷ÈçÏ£º
| ·½·¨ |
ÃèÊö |
| CloseKey() |
¹Ø±ÕÒ»¸ö¼üÖµ²¢Ïò¼üֵдÊý¾Ý£¬Ö»Òª¶Ô¼üÖµ²Ù×÷Íê±Ïºó¾ÍÓ¦¸Ã¹Ø±ÕËü£¬²»¹ýÄã¿ÉÒÔ²»±Øµ÷Óô˷½·¨£¬ÒòΪTRegistryµÄÎö¹¹º¯Êý»á×Ô¶¯µ÷ÓÃËü¡£ |
| DeleteKey(AnsiString) |
ɾ³ý¼ £¬²ÎÊýΪҪɾ³ýµÄ¼üÖµ£¬Èç¹û²ÎÊýΪ¿Õ×Ö·û´®£¬Ôòɾ³ýµ±Ç°¼üÖµ |
| OpenKey(Ansistring,bool) |
´ò¿ªÒ»¸ö¼üÖµ£¬Èç¹ûÕâ¸ö¼üÖµ²»´æÔÚ£¬½«Óɵڶþ¸ö²ÎÊý¾ö¶¨ÊÇ·ñ×Ô¶¯½¨Á¢¡£ |
| LoadKey(AnsiString,AnsiString) |
´ÓÎļþ×°Èë¼üÖµ£¬µÚÒ»¸ö²ÎÊýΪ¼üÖµ£¬µÚ¶þ¸ö²ÎÊýΪÎļþÃû |
| KeyExists(AnsiString) |
¼ì²âÒ»¸ö¼üÖµÊÇ·ñ´æÔÚ¡£ |
| SaveKey(AnsiString,AnsiString) |
°ÑÒ»¸ö¼üÖµ±£´æµ½Îļþ£¬²ÎÊý˵Ã÷²Î¼ûLoadKey() |
| ReadInteger(AnsiString) |
¶Á³öÒ»¸ö¼üֵΪÕûÊý£¬Èç¹ûʧ°Ü½«Å׳öÒì³£¡£Í¬´Ëº¯ÊýÀàËÆµÄ»¹ÓÐReadBool()¡¢ReadString()¡¢ReadFloat()¡¢ReadDateTome()¡¢ReadBinaryData()µÈ£¬ÓÃÀ´¶Á³ö²»Í¬ÀàÐ͵ļüÖµ¡£ |
| ValueExists(AnsiString) |
¼ì²âÒ»¸öÖµÊÇ·ñ´æÔÚ¡£ |
| WriteInteger(AnsiString,int) |
дһ¸ö¼üֵΪÕûÊý£¬Èç¹ûʧ°Ü½«Å׳öÒì³£¡£Í¬´Ëº¯ÊýÀàËÆµÄ»¹ÓÐWriteBool()¡¢WriteString()¡¢WriteFloat()¡¢WriteDateTome()¡¢WriteBinaryData()µÈ£¬ÓÃÀ´Ð´È벻ͬÀàÐ͵ļüÖµ¡£ |
ÀûÓÃTRegistryÊǺÜÈÝÒ׵ģ¬Ò»°ãÀ´Ëµ£¬ÓÐÒÔÏÂËIJ½²Ù×÷£º
1) ½¨Á¢TRegistryÀà
2)ÀûÓÃOpenKey()·½·¨´ò¿ªÒ»¸ö¼üÖµ
3)ÓÃReadType()ºÍWriteType()¶Áд¼üÖµ
4)µ÷ÓÃCloseKey£¨£©¹Ø±ÕÒ»¸ö¼üÖµ¡£
¡¡¡¡ÖµµÃ×¢ÒâµÄÊÇ£ºÔÚʹÓÃTRegistryÀàʱ£¬±ØÐëÒª¼ÓÈë´ËÀàµÄÍ·Îļþ£º#include$#@60;Rgistry.hpp$#@62;£¬·ñÔò»á·¢Éúʲô£¬Ö»ÒªÉÔÓÐCÓïÑÔ»ù´¡¶¼»áÃ÷°×¡£
¡¡¡¡ºÃÁË£¬ËµÁËÄÇô¶à£¬Ò²¸Ã¾ÙÒ»¸öʵÀýÀ´ËµÃ÷£¬ÏÂÃæÎÒ¾ÍÒÔÎҵġ¶WinNT×Ô¶¯µÇ¼¡·À´ËµÃ÷TRegistryÀàµÄÓ÷¨¡£
¡¡¡¡WinNTµÄÓû§¶¼ÖªµÀ,WinNTÔÚÆô¶¯Ê±ÐèÒª°´Ctrl+Alt+DelµÇ¼,¼´±ãûÓÐÃÜÂëÒ²ÊÇÈç´Ë.ËäÈ»WinNT²»»áÏó
WIN9XÄÇÑù¾³£ËÀ»ú,µ«Ã¿´Î¿ª»ú¶¼ÒªÕâÑù»¹ÊÇÓе㷳.ÄÜ ²»ÄÜÈÃWinNTÿ´ÎÆô¶¯×Ô¶¯µÇÂ¼ÄØ?ÆäʵֻҪ°Ñ×¢²á±íµÄÒ» ¸öÊôÐÔAutoAdminLogonµÄÖµÉèÖÃΪ"1"¼´¿É,¿ÉϧµÄÊÇÕâ
Ñù×öÖ»ÄܹÜÒ»´Î,ÿ´ÎÆô¶¯ºóWinNT¾Í»á×Ô¶¯°ÑËüµÄÖµ¸ÄΪ "0"(¸ÃËÀµÄBill!).Èç¹ûÿ´Î¶¼ÒªÐÞ¸Ä×¢²á±í,»¹²»Èçÿ´ÎÊÖ¶¯µÇÂ¼ÄØ!д¸ö³ÌÐòÔÚÆô¶¯ºó×Ô¶¯ÐÞ¸ÄÕâ¸öÖµ¾ÍOKÁË¡£
¡¡¡¡Ê×ÏÈн¨Ò»¸ö¹¤³Ì£¬ÔÚ´°Ìå·ÅÈë4¸öÎı¾¿ò£¬·Ö±ðÃüÃûΪ£ºdUser¡¢edPasswd¡¢edRePasswd¡¢edDomain¡£·Ö±ðÓÃÀ´ÊäÈëÓû§Ãû¡¢µÇ¼¿ÚÁî¡¢ÖØÊä¿ÚÁîºÍÓò£¬°ÑedPasswdºÍedRePasswdµÄPasswordCharÊôÐÔ¸ÄΪ"*"(ÃÜÂ뷽ʽÊäÈë)¡£ÔÙ¼ÓÈë2¸ö¸´Ñ¡¿òÀ´Ñ¡ÔñÊÇ·ñ×Ô¶¯µÇ¼(chkAuto)ºÍ×Ô¶¯ÔËÐÐ(chkAutorun)£¬Ò»¸ö¶¨Ê±Æ÷(Timer1)£¬2¸ö°´Å¦(bbtOK¡¢bbtCancel)ºÍһЩLabel,µ÷Õû²¼¾ÖÈçÏÂͼ£º
´ò¿ª´úÂë´°¿Ú£¬ÔÚÍ·²¿ÊäÈëÒÔÏ´úÂ룺
#include TRegistry ®key=* new TRegistry();//¶¨ÒåÈ«¾Ö±äÁ¿£º×¢²á±íÀà¡£
int delay=0;//¶¨ÒåÈ«¾Ö±äÁ¿£¬ÑÓʱʱ¼ä
È»ºóÑ¡Ôñ´°ÌåµÄOnCreatʼþ£¬ÊäÈëÒÔÏ´úÂ룺
regkey.RootKey=HKEY_LOCAL_MACHINE;//ÉèÖøù¼ü //´ò¿ª×Ô¶¯µÇ¼ËùÔڵļü
regkey.OpenKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",true);
//ÒÔÏÂ3¾ä´ò¿ªWindows×Ô¶¯ÔËÐеļüÖµ¡£ TRegistry &AutoRun=* new TRegistry();
AutoRun.RootKey=HKEY_LOCAL_MACHINE;
AutoRun.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",true);
if(strlen(CmdLine)>Application->ExeName.Length()+3)//Èç¹û´ø²ÎÊýÔËÐÐÔòÊÇÒªÐ¶ÔØ
{
AutoRun.DeleteValue("Windows NT Auto Logon");//ɾ³ý×Ô¼º¼ÓÈëµÄÊôÐÔ
regkey.DeleteValue("Windows NT Auto Logon"); delete &AutoRun;
Application->Terminate();//ÖÕÖ¹Ó¦ÓóÌÐò return; } //°Ñ±¾³ÌÐòдÈë×Ô¶¯ÔËÐС£
AutoRun.WriteString("Windows NT Auto Logon",Application->ExeName);
delete &AutoRun;
edDomain->Text=regkey.ReadString("DefaultDomainName"); //¶Á³öÓòÃû
edUser->Text=regkey.ReadString("DefaultUserName"); //¶Á³öÓû§Ãû
chkAuto->Checked=true;
chkAutorun->Checked=regkey.ReadString("Windows NT Auto Logon")=="1"?true:false;
//±¾³ÌÐòÊÇ·ñ×Ô¶¯ÔËÐÐ
edPasswd->Text=regkey.ReadString("DefaultPasswd"); //¶Á³ö¿ÚÁî
setControl(!chkAutorun->Checked); //Èç¹ûÊÇ×Ô¶¯ÔËÐÐ״̬°ÑÆäËûÆÁ±Î£¬·´Ö®ÒàÈ»
if(chkAutorun->Checked)
{
Timer1->Enabled=true; //×Ô¶¯ÔËÐпªÊ¼¼ÆÊ± edRePasswd->Text=edPasswd->Text;
}
}
ÆäÖÐsetControl()µÄ¹¦ÄÜÊÇÆÁ±Î¼¸¸ö×é¼þ£¬¶¨ÒåÈçÏ£º
Ê×ÏÈÔÚ´°ÌåµÄÍ·Îļþ´°ÌåÀඨÒå¼ÓÈëvoid setControl(bool);
Æäº¯ÊýÌåÈçÏÂ(´°ÌåÃûΪfmMain)£º
void TfmMain::setControl(bool t)
{
edUser->Enabled= t;
edRePasswd->Enabled= t;
edPasswd->Enabled= t;
edDomain->Enabled= t;
chkAuto->Enabled= t;
}
ÔÚchkAutoRunµÄOnClickʼþÖиù¾ÝÊÇ·ñÑ¡ÔñÁË×Ô¶¯ÔËÐÐÀ´¾ö¶¨ÊÇ·ñÆô¶¯¶¨Ê±Æ÷
setControl(!chkAutorun->Checked);//Èç¹ûÊÇ×Ô¶¯ÔËÐÐ״̬°ÑÆäËûÆÁ±Î£¬·´Ö®ÒàÈ» if(!chkAutorun->Checked)
{
Timer1->Enabled=false;//Èç¹û²»ÊÇ×Ô¶¯ÔËÐУ¬¶¨Ê±Æ÷ʧЧ delay=0;
}
else
Timer1->Enabled=true;//·ñÔò¶¨Ê±Æ÷ÓÐЧ
ÔÚ°´Å¦bbtOKµÄOnClickʼþÖÐÊäÈëÒÔÏ´úÂ룬Æä¹¦ÄÜÊÇдÈë×¢²á±í¡£
if(edRePasswd->Text==edPasswd->Text)//Èç¹ûÃÜÂëÕýÈ·
{
regkey.WriteString("DefaultDomainName",edDomain->Text);//дÈëÓòÃû
regkey.WriteString("DefaultUserName",edUser->Text);//дÈëÓû§Ãû
regkey.WriteString("AutoAdminLogon",chkAuto->Checked?"1":"0");//дÈëÊÇ·ñ×Ô¶¯µÇ¼
regkey.WriteString("Windows NT Auto Logon",chkAutorun->Checked?"1":"0");//дÈëÊÇ·ñ×Ô¶¯ÔËÐÐ
regkey.WriteString("DefaultPasswd",edPasswd->Text);//дÈëÃÜÂë
if(!chkAutorun->Checked)//Èç¹û²»×Ô¶¯ÔËÐÐ
{
TRegistry &AutoRun=* new TRegistry();
AutoRun.RootKey=HKEY_LOCAL_MACHINE; //ÕÒµ½×Ô¶¯Æô¶¯
AutoRun.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",true);
AutoRun.DeleteValue("Windows NT Auto Logon");//ɾ³ý×Ô¼º¼ÓÈëµÄÊôÐÔ
delete &AutoRun;
}
Application->Terminate();//³ÌÐòÖÕÖ¹¡£
}
else
{
ShowMessage("ÃÜÂë´íÎó!"); edPasswd->Text="";
}
µ±³ÌÐò×Ô¶¯ÔËÐÐʱ£¬ÑÓʱ3ÃëºóдÈë×¢²á±í£¬ÔÚTimer1µÄOnTimerʼþÖÐдÈëÈçÏ´úÂ룺
delay++; if(delay>=3)//ÑÓʱÈýÃëµ½ bbtOK->Click();//µ¥»÷¡¶È·¶¨¡·°´Å¦£¬Ð´Èë×¢²á±í
È»ºóÔÚbbtCancelÖмÓÈëÖÕÖ¹³ÌÐòµÄ´úÂ룺Application->Terminate();ÎÒÃǵijÌÐò¾ÍËãÍê³ÉÁË£¬ÕæµÄÍêÁËÂð£¿NO£¡ÎÒÃÇÔÚ¿ªÊ¼µÄʱºîÓÃnewÉú³ÉÁËregkey£¬Ó¦¸ÃÒªÓÃdeleteɾ³ýËü£¬ËùÒÔÔÚ´°ÌåµÄOnCloseʼþÖмÓÈëdelete
£¦regkey¾ÍOKÁË¡£
Èç¹ûÑ¡ÔñÁË×Ô¶¯ÔËÐУ¬³ÌÐò¾ÍÄÜÔÚÿ´ÎÆô¶¯Ê±ÑÓʱ3Ã룬ȻºóÔÚÐÞ¸Ä×¢²á±íÖÐÏàÓ¦µÄÏîºóÍ˳ö£¬ÊÍ·Åϵͳ×ÊÔ´¡£
ÔõôÑù£¿ºÜ¼òµ¥°É£¡Èç¹ûÎÒÃÇÆ½Ê±×¢ÒâÊÕ¼¯¡¶µçÄÔ±¨¡·µÈ±¨¿¯ÔÓÖ¾ÉϵÄÓйØ×¢²á±íÉèÖõÄÎÄÕ£¬ÔÙÓÐÁ˹¦ÄÜÇ¿´óʹÓ÷½±ãµÄC++Builder£¬ÎÒÃÇÒ²¿ÉÒÔд³öʲô"Windows
³¬¼¶ÉèÖÃ"Ö®ÀàµÄ³ÌÐòÁË¡£