Access-Passowort über ODBC übergeben?
-
Ich habe eine Access-DB mit 2 Benutzern angelegt. Der Admin braucht ein Passwort und ein Standard-Benutzer nicht (hat dann auch nur Leserechte). In unserem C++-Projekt muss jetzt jedesmal ein Eintrag vom Benutzer erfolgen, dass das Passwort angegeben werden muss etc. bevor die DB mit Open (von CRecordset) geöffnet werden kann. Gibt es da eine Möglichkeit, ein Passwort oder einen Benutzernamen irgendwo über eine Methode mitzugeben, dass er automatisch die DB öffnen kann, weil ihm ein Benutzername übergeben wird??
Gruß, Mäggi
-
Wenn ich Deine Frage richtig verstehe, dann musst Du das Passwort der Methode CDatabase::Open und nicht CRecordset:Open übergeben.
Beispiele:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-116639-and-highlight-is-pwd.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cdatabase.3a3a.open.aspGruß T.
-
Theoretisch kann man das auch dem CRecordset::Open mitgeben, man muss es in der Funktion GetDefaultConnect nur richtig eintragen.
CString CFehlerSet::GetDefaultConnect() { return _T("ODBC;DSN=Datenquellenname;UID=Username;PWD=passwort"); }
-
vielen Dank für die schnelle Antwort:)
-
Bedenke aber das alles was als "string" angegeben wird, auch
Klartext in der exe drin steht, dies gilt auch für Passwörter.
-
Cool, stimmt ja.
Hast du eine Idee, wie man das ohne großen Aufwand umgehen kann?
Also, ich glaube kaum, dass es bei uns so schlimm wäre, aber ich wüßte es schon gerne.
-
Also ich als Laie würde wenn ich es wirklich vermeiden wollte eifach über Stringadditionen machen. Sprich festcodiert nur Teile und dann wieder zusammen setzen, dann sollte doch in der Exe nur die Teile zu sehen sein wenn ich es dann noch mehr verschleiern will, dann mach ich halt noch paar Pseudo Variablen.
Vielleicht würds ja gehn.
-
Zusätzlich kann man das Passwort noch ein bisschen auf der ASCII-Tabelle verschieben, ist natürlich keine Verschlüsselung, aber falls einer mit einem Editor in die EXE reinschaut sollte das PW nicht gleich im Klartext herausgrinsen
:
/* =================================================================================== *Einfache* Funktion um unser PW nicht in Klartext abspeichern zu müssen =================================================================================== */ CString CMyDlg::DecodeString(LPCTSTR szSource) { WORD ch; BYTE byte1; int n, nMax = _tcslen(szSource); CString sFinal, sTemp; for (n = 0; n < nMax; ++n) { ch = (WORD)szSource[n]; byte1 = (BYTE) ch - 3; sTemp.Format(_T("%c"),byte1); sFinal += sTemp; } return sFinal; }
Gruß T.