ACE 또는 JET의 설치 여부를 Windows xp/vista/7을 실행하는 컴퓨터에서 확인하는 방법으로 적절한 연결 문자열을 사용하여 액세스 데이터베이스에 연결할 수 있습니다..net을 사용하여 Windows 컴퓨터에서 ACE 또는 JET를 확인하는 방법은 무엇입니까?
답변
확인할 수있는 레지스트리 키가 있습니다. HKCR\Microsoft.ACE.OLEDB.12.0
에 있습니다. RegistryKey
클래스를 사용하여 읽을 수 있습니다.
레지스트리 키가있을 수 있지만 32 비트/64 비트 문제로 인해 OleDb 연결이 계속 실패 할 수 있습니다. 대상 컴퓨터에 32 비트 ACE.OLEDB가 설치되어 있으면 해당 응용 프로그램이 32 비트 CPU를 대상으로 컴파일되었는지 확인하십시오. 그렇지 않으면 응용 프로그램이 64 비트 (64 비트 OS)에서 실행될 수 있으며 32 비트 버전의 ACE.OLEDB를로드 할 수 없습니다.
공급자의 아키텍처 (설치된 경우)를 어떻게 확인할 수 있습니까? –
동의합니다. 레지스트리는 가장 좋은 방법 (32 비트 및 64 비트 버전 및 사용자 권한 등)이 아닙니다. 그러나 원래 질문은 "적절한 연결 문자열 사용"이라고 명시되어 있습니다. 이는 런타임 문제가 아니라 컴파일 타임 문제. 솔루션은 OleDbEnumerator를 사용하는 것일 수 있습니다.
다음은 Microsoft Access (ACE 12.0)의 32 비트 버전을 확인하는 예입니다. x86 응용 프로그램의 경우 :
using System.Data;
using System.Data.OleDb;
static bool AceOleDb12Present()
{
OleDbEnumerator enumerator = new OleDbEnumerator();
DataTable table = enumerator.GetElements();
bool bNameFound = false;
bool bCLSIDFound = false;
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
if ((col.ColumnName.Contains("SOURCES_NAME")) && (row[col].ToString().Contains("Microsoft.ACE.OLEDB.12.0")))
bNameFound = true;
if ((col.ColumnName.Contains("SOURCES_CLSID")) && (row[col].ToString().Contains("{3BE786A0-0366-4F5C-9434-25CF162E475E}")))
bCLSIDFound = true;
}
}
if (bNameFound && bCLSIDFound)
return true;
else
return false;
}
- 1. .Net을 사용하여 네트워크 컴퓨터에서 프로세스 중지
- 2. .Net을 사용하여 파일 시스템 용량을 확인하는 가장 좋은 방법은 무엇입니까?
- 3. .NET을 사용하여 Windows 그룹 정책을 적용하는 방법은 무엇입니까?
- 4. Windows 컴퓨터에서 소켓을 가져 오는 방법은 무엇입니까?
- 5. C# .Net을 사용하여 화면을 캡쳐하는 방법은 무엇입니까?
- 6. Windows 머신이 IPV4 또는 IPV6를 실행 중인지 확인하는 방법은 무엇입니까?
- 7. .NET을 사용하여 디렉토리를 압축하는 방법은 무엇입니까?
- 8. iphone SDK를 사용하여 Windows 컴퓨터에서 공유 폴더에 액세스하는 방법은 무엇입니까?
- 9. 원격 컴퓨터에서 Windows 레지스트리를 공유하는 방법은 무엇입니까?
- 10. .NET을 사용하여 데이터베이스를 설치하고 설정하는 방법은 무엇입니까?
- 11. JET를 사용하여 SQL을 사용하여 결과 서식 지정
- 12. .NET을 사용하여 XML 파일을 정렬하는 방법은 무엇입니까?
- 13. .NET을 사용하여 특정 모니터를 끄는 방법은 무엇입니까?
- 14. Linux에서 이더넷을 확인하는 방법은 무엇입니까?
- 15. 운영체제를 확인하는 방법은 무엇입니까?
- 16. C# 코딩을 사용하여 Windows 서버에서로드를 확인하는 방법은 무엇입니까?
- 17. .NET을 사용하여 CSV 파일을 DB2 데이터베이스로 가져 오는 방법은 무엇입니까?
- 18. .NET을 사용하여 Windows 레지스트리에 액세스 하시겠습니까?
- 19. .NET을 사용하여 원격으로 Windows 사용자 암호 변경
- 20. Windows Mobile 장치 유형을 확인하는 방법은 무엇입니까?
- 21. .Net을 사용하여 create sql statment에서 모든 필드를 추출하는 방법은 무엇입니까?
- 22. .NET을 사용하여 Windows에서 실제 디렉토리 경로를 얻는 방법은 무엇입니까?
- 23. .NET을 사용하여 Windows 응용 프로그램에 대한 알림을 구현하는 방법
- 24. .NET을 사용하여 Windows 폴더 내용을 Windows 폴더 내용으로 표시하는 방법은 무엇입니까?
- 25. JET를 사용하여 데이터베이스 필드에 주석 추가
- 26. VB6 및/또는 .NET을 사용하여 사진 인쇄
- 27. Windows 컴퓨터에서 임시 포트 범위를 변경하거나 보는 방법은 무엇입니까?
- 28. 방금 설치 한 MSI에서 Windows 재부팅을 요청했는지 확인하는 방법은 무엇입니까?
- 29. DirectoryEntry가 사용자 또는 그룹인지 확인하는 방법은 무엇입니까?
- 30. 파일이 EXE 또는 DLL인지 확인하는 방법은 무엇입니까?
Jet가 항상 설치됩니다. 질문은 실제로 ACE가 설치되었는지 여부와 관계가 있습니다. –
"ACE"라는 태그는 ACE (Adaptive Communication Environment) (http://www.cse.wustl.edu/~schmidt/ACE.html)를 생각하면 자신을 비롯한 대부분의 개발자가 당신의 질문과 아무 관련이 없습니다. –
@Alexei : 태그를 제거했습니다 – willem