您的位置:首页 > 其它

获取软件在注册表的安装信息

2013-08-14 18:39 405 查看
/// <summary>
/// 获取软件在注册表的安装信息
/// 软件都会在这个注册表下填写自己的安装信息
/// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
/// </summary>
/// <param name="softName">软件名称</param>
/// <param name="path">返回软件安装路径</param>
/// <returns>是否找到注册表的安装路径</returns>
public static bool TryGetSoftwarePath(string 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(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" + softName.ToString() + ".exe", false);

//Read the path
objResult = regSubKey.GetValue(strKeyName);
regValueKind = regSubKey.GetValueKind(strKeyName);

//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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: