高分求开机启动的注册表写法
要能用的源代码,编译器是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);
}
[解决办法]