一、主要记录主动写入注册表安装路径,程序查找安装路径并启动相应的程序。
1、写入注册表程序的路径,如下图:
2、 封装读取固定注册表方法
// <summary>
/// 读取
/// </summary>
/// <param name="keyPath">注册表路径</param>
/// <param name="keyName">注册表对应的项目名称</param>
public static string GetValue(string keyPath, string keyName)
{
RegistryKey key = Registry.ClassesRoot;
try
{
RegistryKey myreg = key.OpenSubKey(@keyPath);
if (!Equals(myreg, null))
return myreg.GetValue(keyName).ToString();
return string.Empty;
}
finally
{
key.Close();
}
}
3、读取注册表的值并启动相关程序
/// <summary>
/// 读取注册表获取程序路径并运行
/// </summary>
private static void GetRegist(string strParams)
{
string path = GetValue(@"ceshi\login", "path").ToString(); //获取注册表的值
if (!Equals(path, null))
{
try
{
Process pro = new Process();
pro.StartInfo.FileName = Path.Combine(System.Windows.Forms.Application.StartupPath, "JHMRConvertPDF.exe");
pro.StartInfo.Arguments = strParams;
pro.StartInfo.Verb = "Open";
pro.StartInfo.CreateNoWindow = false;
if (!File.Exists(pro.StartInfo.FileName))
{
MessageBox.Show("不存在当前程序,请检查注册表是否正确");
}
pro.Start();
pro.WaitForExit();
}
catch (Exception ex)
{
}
}
}
二、查看注册表是否安装了某个软件:
/// <summary>
/// Checks the security control.
/// </summary>
/// <returns></returns>
public bool CheckSecurityControl()
{
bool flag;
try
{
Guid guid = new Guid("3F367B74-92D9-4C5E-AB93-234F8A91D5E6");
Activator.CreateInstance(Type.GetTypeFromCLSID(guid, true));
flag = true;
}
catch
{
flag = false;
}
return flag;
}
2、通过注册表查看安装软件版本:
/// <summary>
/// Checks the security version.
/// </summary>
/// <param name="curVersionStr">The current version string.</param>
/// <returns></returns>
public bool CheckSecurityVersion(out string curVersionStr)
{
bool flag;
curVersionStr = string.Empty;
try
{
curVersionStr = get_current_version();
flag = new Version(curVersionStr).CompareTo(new Version("2.8.0.5")) >= 0;
}
catch
{
flag = false;
}
return flag;
}
/// <summary>
/// Gets the current version.
/// </summary>
/// <returns></returns>
private string get_current_version()
{
string str = read_reg(Registry.LocalMachine, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\CertApp", "DisplayVersion");
if (string.IsNullOrEmpty(str))
{
str = read_reg(Registry.LocalMachine, "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\CertApp", "DisplayVersion");
}
if (string.IsNullOrEmpty(str))
{
str = "0.0.0.0";
}
return str;
}
/// <summary>
/// Reads the reg.
/// </summary>
/// <param name="obj">The object.</param>
/// <param name="strSubKey">The string sub key.</param>
/// <param name="key">The key.</param>
/// <returns></returns>
private string read_reg(RegistryKey obj, string strSubKey, string key)
{
string empty;
try
{
RegistryKey registryKey = obj.OpenSubKey(strSubKey);
if (registryKey != null)
{
object value = registryKey.GetValue(key);
empty = value?.ToString() ?? string.Empty;
}
else
{
empty = string.Empty;
}
}
catch
{
empty = string.Empty;
}
return empty;
}