我是在注册表的run下实现自启动的,程序可以启动,就是在连接数据库时出错。如果不是开机自启动,其它时候启动时很正常,不会出错。请大家帮忙。谢谢了。

解决方案 »

  1.   

    用什么方式连数据库??
    是ODBC还是ADO??报什么错??
      

  2.   

    在Run里启动的程序,当前路径不是你程序所在文件夹,而是C:\Windows\System32
    你在程序里连接数据库mdb文件时,可以用GetModuleFileName来取得程序所在路径
    或者你建一个快捷方式,直接放在开始菜单的启动里
      

  3.   

    TO ribut9225 : 我用的是ODBC方式连接的数据库。
    To vocanicy: 就是用的GetModuleFileName来取得程序所在的路径。
      

  4.   

    我的这个自启动程序,一是写入注册表,以便开机时启动它。二是它是为了监控另外一个程序。防止那个程序非法关闭。
    我编程序时,用记事本程序来做被监控的程序,自启动程序可以完成上面的两个功能。
    可是,当我换了个需要数据库的被监控程序时,出现了我碰到的错误:连接数据库失败。我所用的连接数据库的方式是ODBC方式。
    conn.CreateInstance("ADODB.Connection");
    try
    {
    conn->Open(zd2.getString(),"","",-1);
    }
    catch(_com_error  &e)
    {
    conn=0;
    AfxMessageBox("Connection DSN is error.");
    exit(0);
    }
      

  5.   

    用IShellLink在目标目录创建一个快捷方式
    开始菜单的目录可以用SHGetSpecialFolderPath获得
      

  6.   

    To:jiangsheng 
    我早上已经这么做的,但是还是出现连接不上数据库的错误。用了注册表和写入开始菜单两种方法,还是不行。那个ODBC方式连接数据库,系统启动时它怎么走的。
      

  7.   

    当前路径问题
    LPWSTR path = new WCHAR[256];//存放当前路径
    ::GetCurrentDirectory(256,path);把当前路径设置到连接数据库字符串里
      

  8.   

    介绍个经验给你,如果遇到这种不能调试的问题可以将错误信息记录到文件中,也就是创建一个自己的调试日志。
    然后通过日志文件就知道程序究竟遇到什么错误
    知道原因任何问题都好解决的。HRESULT hr;
    hr = conn.CreateInstance("ADODB.Connection"); 
    if(FAILED(hr))
       记录hr;try 

        hr = conn->Open(zd2.getString(),"","",-1); 
        if(FAILED(hr))
            记录hr;

    catch(_com_error  &e) 

        记录e.ErrorMessage();
    }