Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > доступ к запароленной mdb через Jet.OLEDB


Автор: baleog 20.6.2006, 18:34
делаю так
Код



         CDataSource db;
    HRESULT        hr;

    CDBPropSet    dbinit(DBPROPSET_DBINIT);
    dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
    dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
    dbinit.AddProperty(DBPROP_AUTH_PASSWORD, db_password);
    dbinit.AddProperty(DBPROP_AUTH_PERSIST_ENCRYPTED, false);
    dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
    dbinit.AddProperty(DBPROP_AUTH_USERID, "Admin");
    dbinit.AddProperty(DBPROP_INIT_DATASOURCE, db_name);
    
    snprintf(prov,sizeof(prov),"Microsoft.Jet.OLEDB.%d.%d",v,sv); // 4.0
    hr = db.OpenWithServiceComponents(prov, &dbinit);
    if (FAILED(hr)) return 0;
    
    и если db_password = NULL и mdb-файл не запаролен, то бд открывается. если же задать мдб-файлу пароль, и в db_password его соответственно прописать, то FAILED(hr) возвращает истину.
    в справке к VC6 читал, что пароли `ignored in this release`, но собирал с 2003-ей студией, все равно с паролем не открывает.
    пробовал еще запустить через db.Open(AfxGetMainWnd()->GetSafeHwnd()) и через диалог ввести пароль, имя файла, но все равно не открывает.
     

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)