2010-08-09 8 views
2

현재 MS Access 2007이 설치되어 있는지 확인하는 응용 프로그램을 유지 관리하고 있습니다. 레지스트리 키가 있는지 확인하여이 작업을 수행합니다.MS Access 2010이 설치되어 있는지 확인하십시오.

public bool IsAccess2007Installed() 
{ 
    RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application.12\shell\open\command", false); 

    return rootKey != null; 
} 

어떻게하면 MS Access 2010이 설치되어 있는지 확인할 수 있습니까? 아니면 더 나은 방법은, 나는 MS 액세스 2007 이상이 설치되어 있는지 확인하려면 어떻게해야합니까?

사용자에게 관리자 권한이 있다고 가정합니다.

+0

내가 러셀의 대답에 따라 솔루션을 구현했습니다. CurVer에 의존하지 않는 솔루션을 누군가에게 제공 할 수 있다면 코드를 게시 할 것입니다. –

+1

관심이있을 수 있습니다 : http://stackoverflow.com/questions/2020181/find-version-of-access – Fionnuala

+0

Thanks Remou. 답변 중 하나에 액세스 버전 13이 있는지 확인합니다. Google에 따르면, Microsoft는 미신적 인 이유로 버전 13을 건너 뛰었습니다. –

답변

1

값 대신이 키를 확인할 수 있습니다 (예 : Access.Application.12). HKEY_LOCAL_MACHINE \ 소프트웨어 \ 클래스 \ Access.Application의 \의 대답 : CurVer

그래서 코드를 당신의 라인은 다음과 같습니다

RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application\CurVer", false); 

if (rootKey == null) return false; 

string value = rootKey.GetValue("").ToString(); 
int verNum = int.Parse(value.subString(value.indexOf("Access.Application."))); 
if (value.StartsWith("Access.Application.") && verNum >= 12) 
{ return true; } 
+0

컴퓨터에서 마지막으로 실행 된 버전에 따라 변경되지 않습니까? 예 : MS Access 2003과 2007이 모두있는 경우 2007이 설치되어 있어도 현재 버전을 2003로 설정할 수 있습니다. –

+0

감사합니다. Russel. 이 단계는 2 단계로 구현되었으며, 먼저 2007이 설치되어 있는지 확인한 다음 현재 버전을 확인합니다. 대부분의 경우 작동하지만 예외는 다른 버전과 함께 설치됩니다. 유사한 솔루션을 찾는 다른 사용자는 string value = rootKey.GetValue ("")를 사용하려고합니다. ToString(); 키의 기본값을 가져옵니다. –

+0

@Evil Pigeon, 고마워, 내 대답을 업데이 트합니다. :) – Russell

관련 문제