关于C# 获取所有已安装的CAD的版本的疑惑
非常郁闷的事,通过如下方法,在WIN7 64位系统中,竟然无法获取 Registry.LocalMachine.OpenSubKey 下的任何值,请教老大们有其他方法能够获得64位系统中已安装的CAD的所有版本及安装位置么?
RegistryKey allcad = Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Autodesk\\AutoCAD", false);//加true读写模式
List<string> CAD_PATHLST = new List<string>();
foreach (string bb in allcad.GetSubKeyNames())
{
string bbz = "Software\\Autodesk\\AutoCAD\\" + bb;
RegistryKey allbb = Registry.LocalMachine.OpenSubKey(bbz, false); //得到所有版本
try
{
foreach (string LAG in allbb.GetSubKeyNames()) //得到各版本下的各语言版
{
string CADPATH = Registry.LocalMachine.OpenSubKey(bbz + "\\" + LAG, false).GetValue("AcadLocation").ToString(); //得到所有版本
if (File.Exists(CADPATH + "\\acad.exe"))
{
CAD_PATHLST.Add(CADPATH);
}
}
}
catch { }
}
allcad = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Autodesk\\AutoCAD", false);//加true读写模式
foreach (string bb in allcad.GetSubKeyNames())
{
string bbz = "Software\\Wow6432Node\\Autodesk\\AutoCAD\\" + bb;
RegistryKey allbb = Registry.LocalMachine.OpenSubKey(bbz, false); //得到所有版本
try
{
foreach (string LAG in allbb.GetSubKeyNames()) //得到各版本下的各语言版
{
string CADPATH = Registry.LocalMachine.OpenSubKey(bbz + "\\" + LAG, false).GetValue("AcadLocation").ToString(); //得到所有版本
if (File.Exists(CADPATH + "\\acad.exe"))
{
CAD_PATHLST.Add(CADPATH);
}
}
}
catch { }
}
请尝试使用:
RegistryKey KeyAutoCAD = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);获得RegistryKey对象,
调用
RegistryKey regKeyAutoCAD = KeyAutoCAD.OpenSubKey(@"Software\Autodesk\AutoCAD", false);
string[] AutoCAD_Versions = regKeyAutoCAD.GetSubKeyNames();
获得安装目录下所有CAD版本。 非常感谢老大的指点
页:
[1]