VC如何让程序本身开机自动运行

来源:百度知道 编辑:UC知道 时间:2024/05/23 12:26:00
我的程序(abc.exe)运行时需要调用一个数据库"abc.mdb"。
下面的代码实现了写进注册表实现开机运行操作,但是程序无法找到abc.mdb文件,因而无法成功运行。打开Release文件夹下的abc.exe,程序又能正常运行。请问该怎样改?让系统启动时也能找到当前目录下的数据库abc.mdb文件。
void CFMConfig::SetAutoStart(BOOL b)
{
BOOL bStart=b;
HKEY hKey;
CString dir=_T("SoftWare\\Microsoft\\Windows");
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, dir, 0, KEY_WRITE, &hKey)==ERROR_SUCCESS)
{
HKEY hCurVer;
if(::RegCreateKeyEx(hKey, _T("CurrentVersion"), 0, NULL, 0, KEY_WRITE, NULL, &hCurVer, NULL)==ERROR_SUCCESS)
{
HKEY hRun;
if(::RegCreateKeyEx(hCurVer, _T("Run"), 0, NULL, 0, KEY_WRITE, NULL, &hRun, NULL)==ERROR_SUCCESS)
{
if(bStart)
{
TCHAR sPath[MAX_PATH];
::GetModuleFileName(NULL,sPath,MAX_PATH);
CString value=sPath;
//value+=_T(" /b");
::RegSetValueEx(hRun, _T("abc"), NULL, REG_SZ, (PBYTE)value.Ge

你程序里的给的abc.mdb路径是相对路径吧,比如用的当前路径,这样不行,当你从别的地方打开你的程序时,当前路径就不是你程序的路径了。

你用绝对路径打开abc.mdb试试,也就是取得你程序exe文件的路径,然后生成abc.mdb的路径,再打开abc.mdb

简单的要死。你可以把路径保存到注册表里呀,这样不就可以读取了?

直接在启动项目里面添加程序的快捷方式就可以了