问题是:在什么地方写修改注册表得代码比较好另:只要修改一次就可以了,怎样保证程序第二次运行时不再修改注册表
解决方案 »
- vs2010精简版和旗舰版有什么区别?
- 求助:cvRemap运行出错
- 【SetWindowPos】函数使用的问题!
- CScrollBar滚动条的问题
- VC做ActiveX控件时,有没有办法直接把需要的控件拖上去
- MCISendString的问题??
- socket连接后,怎么检测到它们之间发的Keep Alive 包?
- 怎么设置一个进程的权限,让任务管理器没办法杀死我的进程?
- 【新手上路】急:求系统介绍浏览器中ActiveX控件制作、签署和打包的资料
- 已经设置为URLPOLICY_ALLOW为什么还是不能下载unsigned activex?
- 这样子定义变量对不对啊,写返回结构类型的函数需要注意什么呢?
- 怎样获取最新文件列表中每一个路径字符串?
地方应该不重要。
写在"Software\\Microsoft\\Windows\\CurrentVersion\\Run"中。
2。在第一次运行程序时,在注册表中建立一个键,如标志为Used;
在CWinApp::InitInstance()中读取上述键,若为Used,跳过1
{
//Define Varible
HKEY hKEY;
char CurrentPath[MAX_PATH];
char SysPath[MAX_PATH];
long ret;
LPSTR FileNewName;
LPSTR FileCurrentName;
DWORD type=REG_SZ;
DWORD size=MAX_PATH;
LPCTSTR Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run" ; //Get System Path
GetSystemDirectory(SysPath,size);
GetModuleFileName(NULL,CurrentPath,size);
//Copy File
FileCurrentName = CurrentPath;
FileNewName = lstrcat(SysPath,"\\XXXX.exe");
ret = CopyFile(FileCurrentName,FileNewName,TRUE);
if (!ret)
{
return TRUE;
} //Open key
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE, &hKEY);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return FALSE;
} //Set Key
ret=RegSetValueEx(hKEY,"shit",NULL,type,(const unsigned char*)FileNewName,size);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return FALSE;
}
RegCloseKey(hKEY); return TRUE;
}