Win10アップグレード後、assemblyフォルダがおかしい。

最終更新

普通のフォルダー表示こそが異常だった。

個人用ファイルとアプリを引き継いでWindows10 Build 10586へアップグレードした後のことです。

古いRadeonのソフト(Catalyst Control Center = CCC)を再インストールしたら、C:\Windows\assemblyフォルダーに入るべきファイル(MOM.Implementation.dll等)が入っておらず、度々エラーが表示されました。

(C:\Windows\assemblyフォルダーには、.NET Framework (3.5以前)やそれを使うソフトのdllファイル等が入っています)

イントールをやり直すため、ソフトをアンインストールしてから、assemblyフォルダー内の関連ファイルも削除(アンインストール)しようとしたら、フォルダーの表示が一般的なものでした。実は、これが変だったのです。

一般的なフォルダー表示

本来はこちら。デフォルトはこのような.NET アセンブリ向け表示形式で、右クリックメニューには「アンインストール」が表示されます。

アセンブリ向けのフォルダー表示

で、調べたら、次の2点が判明。

  • C:\Windows\assembly\desktop.iniファイルがない。
  • C:\Windows\assemblyフォルダーのシステムファイル属性がない。

attribコマンドでassemblyフォルダーの不備が見つかった。

これを修正したところ、表示はアセンブリ向けに戻り、クラボのソフトのインストールも成功しました。

次のいずれのアップグレード(アプリ等引き継ぎ)の場合も同じ症状でした。(アップグレード前のWin8.1ではアセンブリ向け表示)

  • Win8.1 → Win10 Build 10586
  • Win10 Build 10586 → Win10 Anniversary Build 14393

ちなみに、Win10をクリーンインストールしたPCでは、

  • C:\Windows\assembly … アセンプリ向け表示
  • C:\Windows\Microsoft.NET\assembly … 普通のフォルダー表示
    (desktop.iniファイルがなく、システムファイル属性もなし)

となっています。これがデフォルトのようです。

※ C:\Windows\assemblyは「.NET Framework 3.5」以前、
C:\Windows\Microsoft.NET\assemblyは「.NET Framework 4.0」以降で使われます。

C:\Windows\assemblyフォルダーの修正

C:\Windows\assembly\Desktop.iniを作成、属性変更をしてから、C:\Windows\assemblyフォルダーの属性を変更。

ただし、C:\Windows\assemblyフォルダー内に直接ファイルを作成することができないため、別の場所のフォルダーに作成してからコピーしました。

  1. フォルダーオプション→表示タブ→「登録されている拡張子は表示しない」のチェックを外す。
  2. どこかに新規フォルダーを作成、その中に新規テキストファイルを作成し、メモ帳で編集。
  3. 下のグレー部分をコピーして、貼り付け。

    ; ==++==
    ;
    ; Copyright (c) Microsoft Corporation. All rights reserved.
    ;
    ; ==--==
    [.ShellClassInfo]
    CLSID={1D2680C9-0E2A-469d-B787-065558BC7D43}
    ConfirmFileOp=1
    InfoTip=Contains application stability information.

    (Win10 Build 10586のC:\Windows\assembly\desktop.iniの内容)

  4. 上書き保存したら、ファイル名をdestop.iniに変更。
  5. このdesktop.iniをC:\Windows\assemblyフォルダー内にコピー。
  6. コマンドプロンプト(cmd.exe)を管理者として起動し、以下のコマンドを実行していく。
  7. attrib +s +h +r C:\Windows\assembly\desktop.ini
  8. attrib +s +r C:\Windows\assembly
  9. attrib C:\Windows\assembly\desktop.ini

    (コマンド結果にSHRが表示されていればok)

  10. attrib C:\Windows\assembly

    (コマンド結果にS Rが表示されていればok)

attribコマンドで属性変更と変更後のチェック
  • +s … システムファイル属性を付与
  • +h … 隠しファイル属性を付与
  • +r … 読み取り専用属性を付与
+で属性付与、-で属性解除。

assemblyフォルダーの表示を意図的に変更したい場合

https://blogs.msdn.microsoft.com/cumgranosalis/2005/10/02/that-annoying-cwindowsassembly-folder より

C:\Windows\assembly\desktop.iniのファイル名を変更します。ただし、先に属性変更しないとリネームできません。

まずコマンドプロンプト(cmd.exe)を管理者として起動。

普通のフォルダーのような表示にしたい場合

  1. attrib -s -h -r C:\Windows\assembly\desktop.ini
  2. ren C:\Windows\assembly\desktop.ini desktop.bak

(システムファイル属性、隠しファイル属性、読み取り専用属性を解除してから、ファイル名を変更)

.NET アセンブリ向け表示に戻す場合

  1. ren C:\Windows\assembly\desktop.bak desktop.ini
  2. attrib +s +h +r C:\Windows\assembly\desktop.ini

(ファイル名をdesktop.iniに戻す。属性も元通りに)

C:\Windows\assemblyフォルダーのシステムファイル属性や読み取り専用属性を外すことでも、普通のフォルダー表示にできます。しかし、安全な方法とは言えないため、非推奨です。

ちなみに、新規フォルダーを作成(場所はどこでもok)、フォルダー名を次のようにすると、C:\Windows\assemblyフォルダーの中身をいつでもアセンブリ向けの表示で見ることができます。

GodMode.{1D2680C9-0E2A-469d-B787-065558BC7D43}

GodModeでアセンブリ表示

関連記事