读书人

高分求开机启动的注册表写法,该怎么解

发布时间: 2012-04-03 12:38:19 作者: rapoo

高分求开机启动的注册表写法
要能用的源代码,编译器是vc6,要求程序开机启动

[解决办法]
上面代码有点问题。修改如下:

C/C++ code
    HKEY hkey;    CString strData = "c:\\Windows\\system32\\DX_Server.exe";    if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MicroSoft\\Windows\\CurrentVersion\\Run"),        0, KEY_ALL_ACCESS, &hkey)!= ERROR_SUCCESS)    {        VERIFY(!RegCreateKey(HKEY_CURRENT_USER, _T("Software\\MicroSoft\\Windows\\CurrentVersion\\Run"), &hkey));    }    VERIFY(!RegSetValueEx(hkey, _T("DX_Server"), 0, REG_SZ, (BYTE *)strData.GetBuffer(strData.GetLength()), 50));    RegCloseKey(hkey);
[解决办法]
第一种方法:
程序设置如下:
HKEY m_regkey;
char filename[50];
GetModuleFileName(NULL,filename,50);

RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&m_regkey);
RegSetValueEx(m_regkey,"mykey",0,REG_SZ,(const unsigned char *)filename,50);
RegCloseKey(m_regkey);

如果要删除运行的程序就按如下设计:
RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&m_regkey);
RegDeleteValue(m_regkey,"mykey");
RegCloseKey(m_regkey);



第二种方法:

CFileDialog savePath(true,NULL,NULL,OFN_HIDEREADONLY,"exe Files(*.exe)|*.exe||",NULL);

if(savePath.DoModal()==IDOK)
{
CString fullName;
fullName=savePath.GetPathName();
RegKey=NULL;
RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&RegKey);
RegSetValueEx(RegKey,"my_program",0,REG_SZ,(const unsigned char *)(LPCTSTR)fullName,fullName.GetLength());

AfxMessageBox("写注册表成功");

UpdateData(FALSE);
}
[解决办法]
探讨
能稍微修改一下,根据程序运行的位置么,不要固定的位置"c:\\Windows\\system32\\DX_Server.exe";

读书人网 >C++

热点推荐