/// <summary>
/// 获取软件在注册表的安装信息
/// 软件都会在这个注册表下填写自己的安装信息
/// HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
/// </summary>
/// <param name="softName">软件名称</param>
/// <param name="path">返回软件安装路径</param>
/// <returns>是否找到注册表的安装路径</returns>
public static bool TryGetSoftwarePathstring softName, out string path)
{
string strPathResult = string.Empty;
string strKeyName = ""; //"Default)" key, which contains the intalled path
object objResult = null;
Microsoft.Win32.RegistryValueKind regValueKind;
Microsoft.Win32.RegistryKey regKey = null;
Microsoft.Win32.RegistryKey regSubKey = null;
try
{
//Read the key
regKey = Microsoft.Win32.Registry.LocalMachine;
regSubKey = regKey.OpenSubKey@"SOFTWAREMicrosoftWindowsCurrentVersionApp Paths" + softName.ToString) + ".exe", false);
//Read the path
objResult = regSubKey.GetValuestrKeyName);
regValueKind = regSubKey.GetValueKindstrKeyName);
//Set the path
if regValueKind == Microsoft.Win32.RegistryValueKind.String)
{
strPathResult = objResult.ToString);
}
}
catch System.Security.SecurityException ex)
{
throw new System.Security.SecurityException"You have no right to read the registry!", ex);
}
catch Exception ex)
{
throw new Exception"Reading registry error!", ex);
}
finally
{
if regKey != null)
{
regKey.Close);
regKey = null;
}
if regSubKey != null)
{
regSubKey.Close);
regSubKey = null;
}
}
if strPathResult != string.Empty)
{
//Found
path = strPathResult;
return true;
}
else
{
//Not found
path = null;
return false;
}
}