C++程序连接到局域网电脑上的一个ACCESS数据库文件,数据库文件放在装了window server 2003 服务器系统的机器上。
登陆服务器电脑的时候,是有用户名的,如果以非管理员用户登录服务器电脑,则程序连接不上数据库文件,而用管理员用户登录服务器电脑,则可以连接。
如服务器上有管理员用户和密码: Administrator   123,还有有部分权限的非管理员用户如:zsd,密码zsd。
如果我登陆服务器的时候是用的管理员用户Administrator,则程序连接数据库文件正常,如果用用户名zsd登陆服务器,则运行程序时提示“无法找到数据库文件或其他用户正在使用!”
请问这是什么原因啊?怎么解决成用非管理员用户登录到服务器电脑也可以使程序连接数据库?
HT_mdb_filename = "\\\\zsd\\ht\\HT.mdb";  // zsd 是服务器机器名bool CHTPSView::init_DBS(CString HT_MDB_FILENAME, CDaoDatabase *m_MDB)  
{
CString str_temp;
try
{
m_MDB->Open( HT_MDB_FILENAME, false, false, ";PWD=****");
}
catch(CDaoException* e)
{
str_temp.Format("%d",e->m_pErrorInfo->m_lErrorCode);
MessageBox("无法找到数据库文件或其他用户正在使用! ","Error code: "+str_temp,MB_OK|MB_ICONWARNING); delete m_MDB;
e->Delete();
return false;
}
return true;
}

解决方案 »

  1.   

    是否支持我不懂,但是我用管理员用户登录服务器,程序连接就肯定没有问题。
    而且将数据库文件放在装有同样XP系统的局域网电脑上,连接从没有问题,xp系统到xp系统的连接没出现什么用户名的问题
      

  2.   

    设置zsd和ht目录的访问权限,让zsd用户或所属的组有读写zsd和ht目录的权限。
      

  3.   

    不能这样连吧?ACCESS是桌面数据库,虽然可以共享访问。但是不支持局域网访问的。
    主要是不支持网络协议。
      

  4.   

    明白了,文件夹设置权限,开放给用户读写权限,另外,服务器分区用NTFS格式(FAT32共享有问题),
    另外,这其实不是真正的客户端/服务器方式,ACCESS只是个桌面数据库。
      

  5.   


    确实是权限问题,在服务器上新建一个账户,被为该账户指派足够权限,然后你的程序全部通过这个账户去打开这个access数据库就可以了。
      

  6.   

    之前zsd和ht目录设置的被访问权限是对 Everyone 用户组完全控制权限,用zsd用户登录服务器无法连接数据库,刚才我又对ht目录设置了zsd用户的完全控制权限,依然无法连接数据库。
    无奈!因为需要保证局域网的多个用户都能使用这同一个数据库,所以数据库要放在服务器上,但是为了保证其他的数据安全,又需要这些用户用自己的只有部分权限的用户名登陆到服务器上。现在又有了个新的问题,服务器有机器名和IP, 如分别为zsd和192.168.0.2,则有两种方式进入到登陆窗口:\\zsd  或者 \\192.168.0.2, 我现在先用\\192.168.0.2方式,输入我个人部分权限的用户名和密码,如 aa  **  登陆后在权限内可正常操作。之后,我又用\\zsd 方式,输入管理员用户名和密码,Administrator   ** 之后我用程序连接ACCESS数据库,也能够完成。 然后,这两种登陆用户的操作都能正常使用。可是如果电脑重启之后,就只剩下程序连接数据库的操作能正常了。
    我该怎么做?才能解决问题啊?
      

  7.   

    我找了个别的方式,解决了这个问题,目前用了几天,没出现新问题。
    建立一个批处理文件,内容如下:
    net use \\192.168.1.115\ipc$ /user:个人用户名 密码 
    rem 登陆服务器,有用户名和密码
    net use \\cssci\ipc$ /user:Administrator 密码
    rem 登陆服务器,有管理员用户名和密码将这个批处理文件放在启动文件夹下,这样每次启动电脑,就会建立本地机器到服务器的两个不同用户名的连接,这样就是软件连接数据库的应用和一般的访问服务器文件的连接都正常了。