2

Visio 組織図ウィザードで使用する CSV ファイルをエクスポートする C# アプリケーションを構築しています。

Visio のインストールが存在することを確認する方法とパスは?

最も明白な方法はC:\Program Files\Office12\ORGWIZ.EXE存在するかどうかを確認することですが、これは Visio 2007 がインストールされているかどうかに大きく依存します。

私の他の考えはレジストリをチェックすることですが、最も信頼できるソースは何ですか? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\バージョン番号がある場所を調べましたが、その下には、Visio\InstallRoot各バージョンを確認することを除いて完璧な..

でアンインストール情報を確認できることを他の場所で読みましたSoftware\Microsoft\Windows\CurrentVersion\Uninstall\が、Windowsコンポーネントの場合はかなり複雑に見えます...

4

3 に答える 3

5

レジストリで HKEY_CLASSES_ROOT\Visio.Application を検索します。存在しない場合は、インストールしません。存在する場合、CurVer サブキーは、Visio.Application.12 のようなものを提供します。これは、インストールされている DEFAULT バージョンを示します (他のバージョンである可能性があります)。

HKEY_CLASSES_ROOT\Visio.Application.12 Sub Key CLSID は GUID を提供します: {00021A20-0000-0000-C000-000000000046}

HKEY_CLASSES_ROOT\CLSID{00021A20-0000-0000-C000-000000000046} は、EXE へのパスを含むサブキー "LocalServer32" を提供します。

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

ご覧のとおり、私の場合は短いパス形式です。

于 2009-07-06T03:07:40.340 に答える
3

これがロジャーの答えに基づいた私の解決策です:

    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(""));
于 2009-07-06T04:48:18.177 に答える
1

Visio ファイル拡張子が登録されているかどうか、またどのアプリケーションに登録されているかを確認していただけますか?

http://www.dreamincode.net/code/snippet3159.htm

を調べてくださいHKEY_CLASSES_ROOT\\.vsd。キーは存在しますか?値は何ですか? それらを、アプリケーションがインストールされていることを示す一連の値と比較します。

于 2009-07-06T02:51:25.313 に答える