问题
I am maintaining an application which currently checks to see whether MS Access 2007 is installed. It does this by verifying that a registry key exists.
public bool IsAccess2007Installed()
{
RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application.12\shell\open\command", false);
return rootKey != null;
}
How would I go about verifying whether MS Access 2010 is installed? Or better yet, how would I verify that MS Access 2007 or later is installed?
It is assumed that the user has administrator privileges.
回答1:
You can check this key for a value (eg. Access.Application.12) instead. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Access.Application\CurVer
So your line of code would be:
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; }
来源:https://stackoverflow.com/questions/3438002/check-if-ms-access-2010-is-installed