• 締切済み

Windows update エラー 0x80070011

Windows update エラー 0x80070011 更新プログラム KB2183461,KB982664 アップデートしようと何度か試みましたが、エラーコード80070011が表示されアップデートできません。 推測ですが、おそらく、ジャンクション設定しているためと思われます。 C:\Program FilesはD\:Program Files にジャンクションを設定していますので、 元に戻すには、C:\Program Filesのジャンクションを削除し、新たにC:\Program Filesフォルダを作成し、実体がある、D\:Program FilesをすべてC:\Program Filesへ移動させてやらなくてはなりません。 この作業は、手間がかかり、失敗すると被害が大きいです。 よって、もっと簡便な方法はないでしょうか? OS: Windows 7 Professional 64bit よろしくお願いします。

みんなの回答

  • okstyn
  • ベストアンサー率0% (0/0)
回答No.4

必要があってジャンクション設定すること自体は問題ないと思います。 問題は、ジャンクションであることを Program Files 配下を操作する 更新プログラムが認識しないことです。 (どうやら、内部で同一ドライブへのファイルかフォルダの move を行おうと していると思われます) 簡便かはわかりませんがより本質的な対処として、更新プログラムに対して Program Files 実体のありかを教えることはできます。 以下の方法を試してみてはどうでしょうか? regedit を使うなど、システムに影響がある操作なので、誤操作など ないよう行ってください。 http://vilkku.org/2010/02/05/how-to-fix-windows-update-error-80070011/ にある 1. Open the registry editor by going to Run and typing in regedit 2. Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 3. Edit the ProgramFilesDir and CommonFilesDir entries so that they point to the actual location of your Program Files and Common Files folders (most likely just change the drive letter from C: to D:) 4. Close the registry editor, KB974431 should now install without any problems がうまく行くと思います。この説明ではふれられていませんが、同じ場所の CommonFilesDir, CommonFilesDir (x86) 等についても、ジャンクションを経由している ものについては実体のパスに置き換えた方がよいでしょう。

参考URL:
http://vilkku.org/2010/02/05/how-to-fix-windows-update-error-80070011/
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.3

No2です。すみません訂正です dir /s /a:- | findstr /r "\<JUNCTION\>" ちなみに私のマシン(x64)では何もありませんでした。なので、OSメディアから起動して属性保持でこぴーすればいいだけですね(私の場合は)。それがシステムに関係したファイルのコピーの原則です。これ以外は、シャドウコピーでないとちゃんとコピーされません。シャドウもスナップショットなので、完了した時点で、現在との整合性がとれなくなります(つまり古い物がコピーされている)。 また言い忘れたのですが、通常シンボリックリックで行ってください。ジャンクションで行う場合は特殊なときだけと思ってください(対象のアプリが古くてジャンクションじゃないと対応してない時などです)。エンドユーザーはシンボリックリンクで作成のこと。 またジャンクションにする場合、C:\Program Filesに、別のディスクのボリュームをマウントするようにしてください(GUIのディスク管理で行うのと同じ)。これであれば、問題になるようなことは発生しません。 訂正なんだけど、長くなってすみません

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

問題が飲み込めていない方もいるので、まだ特定できていませんが、中間報告。 >この作業は、手間がかかり、失敗すると被害が大きいです この件で作業手順およびフリーソフトの紹介URLがありましたが、あれはあくまでも、W2KからあるジャンクションをGUIで作成するソフトで、この質問者が言っている問題と違います。 移動するに当たって、ジャンクション、シンボリックリンクなどはリンクではなく、リンク先のファイル、フォルダーをそのまま持ってきてしまいます。実際にリンク作ってD&Dコピーすれば、リンクが消えてしまっている事に気づくはず。 UNIX系だと tar コマンドにより、その問題は解決するのですが、Winodwsの場合ありません。しいて言えば、Xcopyとrobocopyに /B シンボリック リンクのリンク先ではなく、シンボリック リンク自体をコピーします。 /SL :: 対象ではなくシンボリック リンクをコピーします /XJ :: 接合ポイントを除外します (通常、既定で含まれます)。  などとあります。なお、ジャンクション=シンボリックリンクと思われている方がいるようですが、違います。説明するのに、エンドユーザーにはあまり関係ないので、ショートカットを含め「ショートカットのような物」と一くくりで説明しても間違いではありませんが、実際のシステム(OS)などの操作では、それ では通りません(ジャンクションはマウントです。主にボリュームなどのマウントですが、フォルダーに対してもできるのでシンボリックリンクの代替として使われていた)。 それなのに「実体がある、D\:Program Files」とあります。以前移動した時にどうやったのでしょうか? まずそれが問題ですよね。ちゃんと処理せずに、単にコピーしただけではないですか? そうするとジャンクションでリンク先としている先には実体がない事が多いのではないのですか? (実体がコピーされていればいいのですが、システムが書き込む先ではなくなっているので整合性がとりなくなります) 逆に言えば、C:に戻せば、元のリンク先が生きてきます。 私がUNIX系OS出身なもので、この手の作業にはなれていますが、Windowsはこのジャンクションが一番やっかいな物です。 そこで私がユーザーホームの移動で行った方法ですが、 AppData内で dir /s | findstr /r JUNCTION >list.txt でまずリストアップします。 xcopy /b /o /k /c /v /g /e でコピーします(Robocopyでも相当オプションを指定)。これでシンボリックリンクだけはリンクをこぴーします。完了後、list.txtを元にJUNCTIONを作成します。もちろんパスを状況に合わせ変更します。なお、UNIX系みたいに、相対パスはリンクに反映されません。 簡単にいえば、xcopyでファイル・フォルダーの属性(アクセス権など)を保持してコピーしてから、ジャンクションだけ、再構成の手順をとります。 list.txtがあればそのままBATにできますね。UNIX系のtarだけでできるようになればいいのですが、もともとのジャンクションの機能から言えば、なくてもあたりまか。 もちろんユーザーHomeなので違うユーザーでログインしています。システムの場合は「診断スタートアップ」か「セーフブート」である事が重要(システム構成ツールで<=スタートメニューの)。できれば、修復ディスクか、OSインストールメディアより起動でコマンドプロンプトより行う。 それで元のエラーですが、質問者はこのサイトの発言者ですかね http://halfworld.jugem.jp/?eid=533 そこにエラーコードが示す内容のリンクがあります。そのエラーコードだと私と同じ問題と言う発言をしていますが、そのサイトの所有者はちょっと勘違いしていることが、わかりますね。エラーコードは、火事だとだけいっていて、出火元をいっているわけではありません。 ちなみに、KB2183461(IEのリコメンドパッチ)、KB982664も同様なものです。この辺で何か記憶ありませんか? IEをアンインストールしているとか? 設置を繰り返したとこか。 IEを全部アンインストールしてからインストールしてパッチを再設置するのもいいのでは。関連するDLLの存在でエラーになる場合は、違うエラーメッセージがLogにでているはず。

hoikourou
質問者

お礼

質問者です。 ご回答ありがとうございます。 説明が不十分で混乱させてしまったようで、申し訳ありません。 >それなのに「実体がある、D\:Program Files」とあります。以前移動した時にどうやったのでしょうか? これは、以下の方法で行いました。(日経WinPCに記載されていた記事で、システムドライブにSSDを使用しているため、C:\Program Files(X86) C:\Program FilesをDドライブ(HDD)へ移動させたかったのです。) 1.Windowsセットアップディスクでコマンドプロンプトを起動 2.メモ帳を起動 3.開くダイアログでドライブやフォルダ構造を確認 4.ダイアログでフォルダを移動 5.mklinkコマンドでジャンクションを作成 深く考えないで、雑誌に記載された内容を元に作業してしまいました。(雑誌にも問い合わせ済ですが、回答は雑誌に掲載されるため、必ず回答されるとはかぎりません。) ただし、本件のエラー(0x80070011)にこのジャンクションの件が関係しているかは、あくまでも私の推測です。 >逆に言えば、C:に戻せば、元のリンク先が生きてきます。 そうすれば、良いと思うのですが、元に戻すのが大変なのと、上記で記したようにSSDを使用しているので、SSD内にファイルを置きたくないので、それ以外に方法が無いかお尋ねしたかったのです。 C:\Program Filesを元に戻してWindows Update後、再度、ジャンクションを作成し、D:\Program Filesに実体を移動したとしても、今後も同様のエラーに悩まされ可能性がありますよね。(自分勝手な考えかもしれませんが...) >それで元のエラーですが、質問者はこのサイトの発言者ですかね >http://halfworld.jugem.jp/?eid=533 いいえ、違います...が、現象は似ていますね。 >ちなみに、KB2183461(IEのリコメンドパッチ)、KB982664も同様なものです。この辺で何か記憶あり >ませんか? IEをアンインストールしているとか? 設置を繰り返したとこか。 いいえ、IEをアンインストールしたり、 設置を繰り返したことはありません。

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.1

もしジャンクション設定が原因と特定できているのなら、ジャンクション設定を外してしまえばいいじゃありませんか。これを設定し直すのは単にドラグ&ドロップするだけでいとも簡単です。下記を参照して下さい。

参考URL:
http://d.hatena.ne.jp/sona-zip/20080514/

関連するQ&A