3

reportviewerWindowsInstaller-KB893803-v2-x86が PC にインストールされているかどうかを確認する最良の方法は何ですか? 特定のプログラムが PC にインストールされているかどうかを調べるために使用する公開鍵を調べる方法はありますか? (これを試してみましたが、うまくいきませんでした)

.NET 3.5 がインストールされているかどうかを確認する最良の方法 これは .NET 3.5 がインストールされているかどうかを確認する方法ですが、レポート ビューアーがインストールされているかどうかを知るには別の公開キーが必要だと思いますが、その取得方法がわかりません。公開鍵。

私が考えることができるのは、インストール ディレクトリがコンピュータに存在するかどうかを確認することだけですが、それは許容できる確認方法でしょうか?

4

4 に答える 4

3

あなたはチェックインすることができますRegistry

    public bool IsInstalled()
    {
        RegistryKey registryBase = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, string.Empty);
        if (registryBase != null)
        {
            return registryBase.OpenSubKey("Software\\Microsoft\\ReportViewer\\v2.0.50727") != null;
        }
        return false;
    }
于 2013-01-23T08:13:36.800 に答える
1

このSOの質問に示されているように、GACにアセンブリを照会することもできます。

于 2013-01-24T08:22:23.493 に答える
0

ここに投稿された他のいずれも機能していなかったため、MS Report Viewer バージョン 10 のインストールで Regshot diff を実行してキーを見つけました。

これは、新しい Windows サーバー VM での実際の差分結果です。

とにかく、このバージョンで見つけたキーは次のとおりです。

SOFTWARE\Wow6432Node\Microsoft\ReportViewer\v10.0

私が使用したコード:

public bool IsInstalledReportViewer()
{
    try
    {
        RegistryKey registryBase = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, string.Empty);
        if (registryBase != null)
        {
            // check the two possible reportviewer v10 registry keys
            return registryBase.OpenSubKey(@"Software\Microsoft\ReportViewer\v2.0.50727") != null
                || registryBase.OpenSubKey(@"Software\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ReportViewer v10") != null
                || registryBase.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\ReportViewer\v10.0") != null;
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex);
        // put proper exception handling here
    }

    return false;
}
于 2015-05-20T15:54:53.970 に答える