代码之家  ›  专栏  ›  技术社区  ›  brasskazoo

如何通过编程检查Visio是否已安装,以及安装在何处?

  •  1
  • brasskazoo  · 技术社区  · 17 年前

    如何检查Visio安装是否存在,以及安装路径如何?

    最明显的方法是检查 C:\Program Files\Office12\ORGWIZ.EXE 存在,但这取决于是否安装了Visio 2007。。

    我的另一个想法是检查注册表,但最可靠的来源是什么?我已经看过了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ Visio\InstallRoot 除了检查每个版本外,这将是完美的。。

    Software\Microsoft\Windows\CurrentVersion\Uninstall\ ,但对于Windows组件来说,这看起来相当复杂。。。

    3 回复  |  直到 17 年前
        1
  •  5
  •   Roger Willcocks    17 年前

    我会查找 注册表中的HKEY\U CLASSES\U ROOT\Visio.Application。 如果不存在,则不安装。 这将告诉您安装的默认版本(可能是其他版本)

    {00021A20-0000-0000-C000-0000000000 46}

    HKEY_CLASSES_ROOT\CLSID{00021A20-0000-0000-C000-0000000000 46}将依次为您提供 子键“LocalServer32” 其中将包含EXE的路径。

    C:\PROGRA~1\MICROS~4\Office12\VISIO.EXE/Automation

        2
  •  3
  •   Community Mohan Dere    9 年前

    这是我的解决方案,基于 Roger's 答复:

        RegistryKey regVersionString = Registry.ClassesRoot.OpenSubKey("Visio.Drawing\\CurVer");
        Console.WriteLine("VERSION: " + regVersionString.GetValue(""));
    
        RegistryKey regClassId = Registry.ClassesRoot.OpenSubKey(regVersionString.GetValue("") + "\\CLSID");
        Console.WriteLine("CLSID: " + regClassId.GetValue(""));
    
        RegistryKey regInstallPath = Registry.ClassesRoot.OpenSubKey("CLSID\\" + regClassId.GetValue("") + "\\LocalServer32");
        Console.WriteLine("PATH: " + regInstallPath.GetValue(""));
    
        3
  •  1
  •   marcc    17 年前
    推荐文章