上网搜索了一段有关从注册表中取得指定软件的路径的代码
如要获得ArcGIS的安装路径
代码如下:
private void Form1_Load(object sender, EventArgs e)
{
string sInstall = ReadRegistry("SOFTWARE\\ESRI\\CoreRuntime"); }
private string ReadRegistry(string p)
{
/// <summary>
/// 从注册表中取得指定软件的路径 /// </summary> /// <param name="sKey"></param> /// <returns></returns> //Open the subkey for reading Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(p, true); if (rk == null) return ""; // Get the data from a specified item in the key. return (string)rk.GetValue("InstallDir");
}
调试代码是发现没有获得安装路径 变量sInstall的值始终为null
哪位朋友知道是什么原因来着?
如要获得ArcGIS的安装路径
代码如下:
private void Form1_Load(object sender, EventArgs e)
{
string sInstall = ReadRegistry("SOFTWARE\\ESRI\\CoreRuntime"); }
private string ReadRegistry(string p)
{
/// <summary>
/// 从注册表中取得指定软件的路径 /// </summary> /// <param name="sKey"></param> /// <returns></returns> //Open the subkey for reading Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(p, true); if (rk == null) return ""; // Get the data from a specified item in the key. return (string)rk.GetValue("InstallDir");
}
调试代码是发现没有获得安装路径 变量sInstall的值始终为null
哪位朋友知道是什么原因来着?
RegistryKey regKey = Registry.ClassesRoot;
string SubKeyPath = null;
RegistryKey optionKey = null;
// 修改2003的Word对应的注册表
SubKeyPath = @"Word.Document.8";
optionKey = regKey.OpenSubKey(SubKeyPath, true);
if (optionKey != null)
{
//更改健值,设置代理,
optionKey.SetValue("BrowserFlags", 2147483684);
optionKey.SetValue("EditFlags", 65536);
} // 修改高版本的Word 2007
SubKeyPath = @"Word.Document.12";
optionKey = regKey.OpenSubKey(SubKeyPath, true);
if (optionKey != null)
{
//更改健值,设置代理,
optionKey.SetValue("BrowserFlags", 2147483684);
optionKey.SetValue("EditFlags", 65536);
}这是我写的。。你可以参考一下。。
如果没安装这个软件,当然返回值是空了.用regedit.exe 可以查找发现:
键 HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009
项 Install下面这段代码,返回qq2009的安装路径。private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(ReadRegistry(@"SOFTWARE\Tencent\QQ2009"));
}
private string ReadRegistry(string p)
{
RegistryKey rk = Registry.LocalMachine.OpenSubKey(p, true);
if (rk == null) return "";
return (string)rk.GetValue("Install");
}
但是为什么获取ARCGIS的安装路径时就有问题呢
我安装了ARCGIS9.2
那么获取其安装路径 传的参数是什么啊?我传的是@"SOFTWARE\ESRI\ARCGIS"
或者Microsoft.Win32.Registry.CurrentUser属性对应HKEY_CURRENT_USER节点有没有
最好你的方法里在这两个节点里找,先找到就return,如果都没有肯定返回null
定位到 HKEY_LOCAL_MACHINE\SOFTWARE\下面
查找 “ESRI”,看看有没有这个键
再展开看有没“ARCGIS”。
多谢各位的热心帮助呢
问题解决了 贴出来给大家分享下 嘿嘿 private void Form1_Load(object sender, EventArgs e)
{
string sInstall = ReadRegistry("SOFTWARE\\ESRI\\ArcGIS Engine Runtime"); } private string ReadRegistry(string p)
{
/// <summary>
/// 从注册表中取得指定软件的路径 /// </summary> /// <param name="sKey"></param> /// <returns></returns>
RegistryKey rk = Registry.LocalMachine.OpenSubKey(p);
if (rk == null) return "";
return (string)rk.GetValue("InstallDir"); }
注意红色标注的部分
回的帖又说我没有权限编辑及删除
那再回复一个吧
private void Form1_Load(object sender, EventArgs e)
{
string sInstall = ReadRegistry("SOFTWARE\\ESRI\\ArcGIS Engine Runtime"); } private string ReadRegistry(string p)
{
/// <summary>
/// 从注册表中取得指定软件的路径 /// </summary> /// <param name="sKey"></param> /// <returns></returns>
RegistryKey rk = Registry.LocalMachine.OpenSubKey(p);
if (rk == null) return "";
return (string)rk.GetValue("InstallDir"); }注意红色标注部分 是修改的部分
这样运行就没有问题了
OK 结贴了