Wie Sie feststellen, ob ass oder JET auf einer windows Maschine verwenden .net?
Wie zu bestimmen (für eine Maschine mit windows xp/vista/7), ob ass oder JET installiert ist, so kann ich mit einer entsprechenden Verbindungszeichenfolge eine Verbindung zu einer access-Datenbank.
- Jet ist immer installiert. Die Frage ist wirklich nur ob oder ob nicht ACE installiert ist.
- Ich denke tag "ACE" ist hier nicht angebracht, weil die meisten Entwickler, darunter auch ich denke, dass der Adaptive Communication Environment (cse.wustl.edu/~schmidt/ACE.html), wenn Sie sehen, "ACE" hat nichts zu tun mit Ihrer Frage.
- entfernt tag
- Ich habe versucht, um einen besseren tag als Jet (die sich mit mehr als einer komplett anderen Technologie, und ist auch nicht korrekt, wenn es das ACE anstelle von Jet beteiligt), aber niemand unterstützt Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein Registrierungsschlüssel, den Sie überprüfen können. Es ist an
HKCR\Microsoft.ACE.OLEDB.12.0
. Lesen können Sie es mithilfe derRegistryKey
Klasse.Vereinbart, die Registrierung ist nicht die beste Methode (32-und 64-bit-Versionen als auch Benutzer-Berechtigungen, etc.) Aber von der ursprünglichen Frage angegeben "verwenden Sie eine geeignete Verbindungszeichenfolge" - das ist ein runtime-Problem, nicht eine compile-Zeit-Problem. Eine Lösung könnte sein, die OleDbEnumerator.
Hier ist ein Beispiel, der prüft, für die 32-bit-version von Microsoft Access (ACE 12.0). für eine x86-Anwendung:
Beachten Sie, dass die RegistryKey kann es aber die OleDb-Verbindung kann immer noch scheitern, weil von 32bit /64bit Probleme.
Wenn der Ziel-Computer hat die 32bit-ass.OLE DB installiert haben, dann stellen Sie sicher, dass die app wird kompiliert, um den Gegner 32bit CPU. Ansonsten kann die Anwendung laufen in 64bit (auf einem 64bit OS) und dann nicht laden kann die 32bit-version von ACE.OLEDB.