Window10 削除できないグローバル・アセンブリ・キャッシュ(GAC)を削除する方法

Windows10では、GAC(グローバル・アセンブリ・キャッシュ)でアプリケーションのバージョンを管理しています。

アプリケーションをアンインストールしても、GAC(グローバル・アセンブリ・キャッシュ)が削除されておらず、新バージョンのアプリケーションをインストールしても古いバージョンを参照してしまうことがあります。

今回は、GAC(グローバル・アセンブリ・キャッシュ)のアンインストールの方法を説明します。

GAC(グローバル・アセンブリ・キャッシュ)とは

GAC(グローバル・アセンブリ・キャッシュ)とは、ザックリいうと、実行形式であるexeやdllのバージョン等の情報が格納されているところです。レジストリのようなものですね。

wikiによると、

グローバル アセンブリ キャッシュとは、マイクロソフト仕様の共通言語基盤 (英:Common Language Infrastructure、略称 : CLI)においてのコンピューター全域で共有される CLI アセンブリ キャッシュである。

そのままアンインストールできるものとできないものがあるのですが、今回は普通では削除できないものを削除する方法です。

Windows10のGAC

Windows10でGACは「C:\Windows\assembly」から確認できます。

アンインストールしても消えない

アンインストールしたアプリケーションでもGACのアセンブリが残ったままになるケースがあります。

それが原因でアプリケーションが動作しないことがあります。

よくあるのが、古いバージョンを削除(アンインストール)した後に新しいバージョンのアプリケーションをインストールしても、古いバージョンとして認識してしまうケース。

他にも、アンインストールしたアプリケーションを再度インストールしても「旧バージョンが残っています」と警告がでるケースも。

そんなときは、アセンブリキャッシュをアンインストールする必要があります。

GACをアンインストールする

Windows7では「C:\Windows\assembly」から該当のアセンブリキャッシュをクリックし、右クリックしてアンインストールできました。

Windows10では直接アンインストールができなくなりました。コマンドプロンプトを使用してアンインストールします。

削除コマンド

gacutil -u {アセンブリキャッシュ}

ここでは「System.Data.OracleClient.dll」を削除しました。

GACをアインインストールできない場合

通常はこれでいいのですが、アプリケーション自体をアンインストールした後にアセンブリを削除しようとすると「アクセスが拒否されました」という警告がでてアンインストールできません。

これはユーザーアカウント制御(UAC)によるものです。よって、一旦UACをOFFにして再起動しないとダメです。

UACのOFFは下記の通りです。

「コントロールパネル」→「ユーザーアカウント」→「ユーザーアカウント制御設定の変更」

Windows10 ユーザーアカウント制御(UAC)のレベルを変更する

ここのスライダーを一番下「通知しない」まで下げます。これでOFFになります。これで、消せないGAC(グローバル・アセンブリ・キャッシュ)をアンインストールできるようになります。

アセンブリキャッシュをアンインストールしたら、UACは元に戻しておきましょう。

以上、Windows10でアンインストールできないGAC(グローバル・アセンブリ・キャッシュ)をアンインストールする方法でした。