人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows Vista Service Pack 1 がインストールできません。

ロジクールのマウスを購入しました。
しかし、デバイスドライバがインストールできません。
カスタマーサポートの方もお手上げ・・・。

それだけでなく、
Googleの日本語入力ソフト、
WindowsでLinuxの機能を使うCygwinなどなど・・・
が正常にインストールできません。

原因はWindows Vista Service Pack 1を導入していないからです。

しかし、更新プログラムの自動インストールは必ず失敗します。
マイクロソフトの公式サイトから手動でダウンロードすればいいと聞いたが、これも失敗・・・。

インストールが失敗した時に表示されるエラー画面が以下です。
------------------------------------------------------------
インストールは成功しませんでした
Service Pack のインストール中に内部エラーが発生しました
0x800B0100
------------------------------------------------------------

その解決方法が以下です。
「Windows Vista および Windows Server 2008 Service Pack
のインストールの問題のトラブルシューティング方法」
http://support.microsoft.com/kb/947366

・・・以下、補足で続きます。

1337080944
●拡大する

●質問者: kireifish
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JD
●0ポイント

セキュリティプログラムをすべてアンインストールして
コンピューターを再起動してから Service Pack を再インストールしてみてはどうでしょう?


kireifishさんのコメント
やりました。でも、ダメでした…。

2 ● cx20
●500ポイント ベストアンサー

問題が解決せず、残念ですが、現時点の内容をまとめたいと思います。

今回、表示されているエラーコードは以下のようなものでした。

コードエラー説明(日本語)説明(英語)
0x8007000DERROR_INVALID_DATAデータが無効です。The data is invalid.
0x800B0100TRUST_E_NOSIGNATUREサブジェクトに署名がありませんでした。No signature was present in the subject.
0x800B0001TRUST_E_PROVIDER_UNKNOWN信頼プロバイダが不明です。The specified trust provider is not known on this system.



0x8007000D は、ファイルまたはレジストリの内容に問題があった場合に API が返すエラーのようです。
レジストリの問題であった場合は解決していない可能性がありますが、ファイルの問題であれば、

■ Windows Update/Microsoft Updateのトラブルを解消する(SoftwareDistributionフォルダを修復する方法) ? @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/944rcvsoftdist/rcvsoftdist.html

にて、改善しているのではと思われます。



0x800B0100 は、セキュリティ関連のコンポーネントの登録状態に問題がある場合に発生するようです。

■ エラー コード 0x800B0100 が、Windows Update または Microsoft Update を使用して更新プログラムをインストールするときに表示される
http://support.microsoft.com/kb/956702/ja

Windows 2000、Windows XP、または Windows Server 2003 であれば、

ファイル名説明
Softpub.dllSoftpub Forwarder DLL
Wintrust.dllMicrosoft Trust Verification APIs
Initpki.dllMicrosoft Trust Installation and Setup
Mssip32.dllMSSIP32 Forwarder DLL

を再登録することで改善するようですが、
Windows Vista 以降では、「システム更新準備ツール」を使うことが推奨されているようです。

■ Windows Vista、Windows Server 2008、Windows 7、および Windows Server 2008 R2 のシステム更新準備ツールについて
http://support.microsoft.com/kb/947821/ja

■ ダウンロード詳細 Windows Vista 用のシステム更新準備ツール (KB947821) [2012 年 2 月]
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=b4d90b06-c27d-4483-bc1f-04d43fa7b293

Windows6.0-KB947821-v19-x86.msu

このツールはバージョンが頻繁に上がっており、v19 が最新版のようです。
また、ツールの実行時に問題があった場合は、以下のログファイルに内容が記録されるようです。



0x800B0001 は、

  1. Windows 更新プログラムが必要とするファイル ("カタログ ストア" と呼ばれる) が壊れている
  2. Windows 更新プログラムが暗号化されたサービス プロバイダーを判別できない

の場合に発生するようです。

■ Windows Update エラー 800B0001
http://windows.microsoft.com/ja-JP/windows7/Windows-Update-error-800B0001

が原因であれば、

■ プログラムや更新プログラムをインストールできない
http://support.microsoft.com/kb/822798/ja

方法 2: Catroot2 フォルダーの名前を変更する

にて改善するかと思います。

が原因であれば、

■ プログラムや更新プログラムをインストールできない
http://support.microsoft.com/kb/822798/ja

方法 3: Cryptographic Services に関連付けられている DLL ファイルを再登録する

が対応方法となるかと思いますが、Windows Vista では KB の内容に誤り(再登録するコンポーネントのファイル名に誤り)がある為、完全には復旧しないようです。

ファイル名存在の有無
softpub.dll存在する
wintrust.dll存在する
initpki.dllVista 以降では存在しない
dssenh.dll存在する
rsaenh.dll存在する
gpkcsp.dllVista 以降では存在しない
sccbase.dllVista 以降では存在しない
slbcsp.dllVista 以降では存在しない
mssip32.dll存在する
cryptdlg.dll存在する

このような差異が発生しているのは、Windows Vista 以降で暗号化 API に仕様変更が入っている為と思われます。
(暗号化 API が「Crypto API」→「CNG(Crypto Next Generation)」に変更されている為)

■ Windows Vista の CNG API を使用して暗号化を行う
http://msdn.microsoft.com/ja-jp/magazine/cc163389.aspx



長くなりましたが、結論として、現時点の問題としては、Windows Vista の新しい暗号化 API が正しく機能していないことが原因と考えられます。
以下は、暗号化 API が使用する暗号化プロバイダ(CNG Provider)を列挙するサンプルプログラムです。
.NET Framework がインストールされている環境であれば、コンパイルして確認できるかと思います。
想定する暗号化プロバイダが表示されるか確認してみてください。

■ Using the Cryptography Configuration Features of CNG (Windows)
http://msdn.microsoft.com/ja-jp/library/bb204780.aspx


// File : EnumCngProvider.cs
// Compile : 
// C:\> SET PATH=C:\Windows\Microsoft.NET\Framework\v2.0.50727;%PATH% [Enter]
// C:\> csc EnumCngProvider.cs [Enter]
// Usage : EnumCngProvider.exe [Enter]
using System;
using System.Collections.Generic;
using System.Data;
using System.Runtime.InteropServices;

class EnumCngProvider
{
 [DllImport("Bcrypt.dll", SetLastError = true)]
 public static extern uint BCryptEnumRegisteredProviders(
 ref int pcbBuffer,
 ref IntPtr ppBuffer
 );
 [DllImport("Bcrypt.dll", SetLastError = true)]
 public static extern uint BCryptFreeBuffer(
 IntPtr pvBuffer
 );
 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
 public class CRYPT_PROVIDERS
 {
 public int cProviders;
 public IntPtr rgpszProviders;
 }

 public static List<string> GetCngProviders()
 {
 int cbBuffer = 0;
 IntPtr pBuffer = IntPtr.Zero;
 List<string> providers;
 EnumCngProvider.CRYPT_PROVIDERS cngProviders = new EnumCngProvider.CRYPT_PROVIDERS();

 uint status = EnumCngProvider.BCryptEnumRegisteredProviders(ref cbBuffer, ref pBuffer);
 if ( status == 0 )
 {
 if (pBuffer != IntPtr.Zero)
 {
 providers = new List<string>();
 Marshal.PtrToStructure(pBuffer, cngProviders);
 IntPtr[] rgpszProviders = new IntPtr[cngProviders.cProviders];
 Marshal.Copy(cngProviders.rgpszProviders, rgpszProviders, 0, cngProviders.cProviders);
 for (int i = 0; i < cngProviders.cProviders; i++)
 {
 providers.Add(Marshal.PtrToStringUni(rgpszProviders[i]));
 }
 EnumCngProvider.BCryptFreeBuffer(pBuffer);
 return providers;
 }
 }
 
 return null;
 } 

 static void Main()
 {
 List<string> stringList = GetCngProviders();
 foreach (string s in stringList) {
 Console.WriteLine(s);
 }
 }
}

暗号化プロバイダ名ファイル名
Microsoft Primitive Providerbcrypt.dll
Microsoft Smart Card Key Storage Providerscksp.dll
Microsoft Software Key Storage Providerncrypt.dll
Microsoft SSL Protocol Providerncrypt.dll

上記の暗号化プロバイダが一覧に表示されない場合は、暗号化プロバイダが正しく登録されていない可能性があります。
一覧に表示するが機能しないというケースであれば、DLL の依存関係に問題がある可能性があります。
その場合は、以下のツールにて、足りない DLL が無いか調査することが可能です。

■ Dependency Walker (depends.exe) Home Page
http://www.dependencywalker.com/


cx20さんのコメント
追加情報です。 問題の原因についてですが、もう少し切り分けができるかもしれません。 以下のサンプルプログラムにより、EXE ファイルのデジタル署名の検証が行えるようです。 例えば、.NET Framework SDK に含まれる csc.exe(C# コンパイラ)は、デジタル署名が含まれていますが、 署名の検証に失敗した場合、以下のエラーを返すようです。 (実際にデジタル署名が含まれないのか、エラーで取得できないのか?等の内訳が取得できるようです。) |*コード|*エラー|*説明| |0x800B0001|TRUST_E_PROVIDER_UNKNOWN|Unknown trust provider.| |0x800B0003|TRUST_E_SUBJECT_FORM_UNKNOWN|The form specified for the subject is not one supported or known by the specified trust provider.| |0x800B0100|TRUST_E_NOSIGNATURE|No signature was present in the subject.| >> ■ Example C Program: Verifying the Signature of a PE File http://msdn.microsoft.com/en-us/library/windows/desktop/aa382384.aspx << 上記サンプルプログラムをコンパイルしたファイルを下記場所に置いてありますので、 必要でしたら、ご利用ください。 >> http://cx20.main.jp/hatena/file/upload/hatena_1337080944_SignatureTest.zip << >|dosbatch| REM <デジタル署名が含まれないケース> C:\SignatureTest> SignatureTest.exe "C:\Windows\notepad.exe" [Enter] The file "C:\Windows\notepad.exe" is not signed.(0x800B0100) → notepad.exe(メモ帳)は、デジタル署名が含まれない為、0x800B0100(TRUST_E_NOSIGNATURE) は正しい動作。 REM <デジタル署名が含まれるケース> C:\SignatureTest> SignatureTest.exe "C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe" [Enter] The file "C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe" is signed and the signature was verified.(0x00000000) → csc.exe(C# コンパイラ)はデジタル署名が含まれる為、0x00000000(ERROR_SUCCESS) となるはず。 → 万一、0x800B0001(TRUST_E_PROVIDER_UNKNOWN) を返すようであれば、暗号化 API の動作環境に問題があると考えられる。 ||< また、上記サンプルプログラムで想定外の動作をする場合、以下の暗号化 API に関するログ出力の設定を行うことにより、 原因を調査できる可能性があります。 Windows Vista 以降には 暗号化 API についてログを記録する仕組みが備わっている為、イベントビューアより >|| [イベント ビューア] - [アプリケーションとサービス ログ] - [Microsoft] - [Windows] - [CAPI2] - [Operational] ||< で「ログの有効化」の設定をすることにより、ログ取得が可能となります。 >> <参考情報> ■ Windows Vista での PKI に関する問題のトラブルシューティング http://technet.microsoft.com/ja-jp/library/cc749296.aspx <<

kireifishさんのコメント
cx20さん、お返事が遅れてすみません。 非常に初歩的なことなんですが、 さっそくmingw-jpというコンパイラをインストールしたのですが、 まず、コンパイルが通りません。 「gcc: installation problem, cannot exec 'cc1': No such file or directory」 と表示されます。 C:\>where cc1 情報: 与えられたパターンのファイルが見つかりませんでした。 と表示されます。 通したパスが間違っているのかと思い、パスを2通り通してみました。 システム環境変数に通したパスは 「;c:\mingw-jp\bin」 「;C:\mingw-jp\lib\gcc-lib\i686-pc-mingw32\3.3.3」 です。 しかし、やはり駄目でした・・・。

cx20さんのコメント
MinGW でもライブラリを揃えればコンパイルは通るかと思いますが、 できれば、Microsoft 製(VC++ or Windows SDK)を使用することを推奨します。 ちょっとサイズがデカイですが・・・ >> ■ Download: Windows SDK Update for Windows Vista - Microsoft Download Center - Download Details http://www.microsoft.com/en-us/download/details.aspx?id=14477 <<

kireifishさんのコメント
Deamon Tools LiteでISOをマウントしようとすると、エラーが出ます。 エラー内容で検索しましたが、解決策が分かりません。

kireifishさんのコメント
Windows Vista Service Pack 1 をインストールするための 「方法 3: Cryptographic Services に関連付けられている DLL ファイルを再登録する」 の暗号化プロバイダを確認する作業を中断しようと思います。

kireifishさんのコメント
cx20さんにもこれ以上の負担を強いるのは申し訳ないと思います。 cx20さんには質問の範囲を超えてお世話になりっぱなしです。 本当にありがとうございます!^_^

cx20さんのコメント
自分が原因を知りたいだけですので、負担とは思ってないですよ。 可能でしたら、サンプルプログラムをEXEにしたものを以下に置いてありますので、下記zipファイルを任意のフォルダに解凍して、コマンドプロンプトで実行してもらえないでしょうか。 (コンパイラをダウンロードする必要は無いです。興味があって、コンパイルしたいということでしたら、話は別ですが・・・) >> ■ 暗号化プロバイダ一覧表示用EXE(コマンドプロンプト用) http://cx20.main.jp/hatena/file/upload/hatena_1337080944_EnumCngProvider.zip ■ デジタル署名テスト用EXE(コマンドプロンプト用) http://cx20.main.jp/hatena/file/upload/hatena_1337080944_SignatureTest.zip << サンプルプログラムの実行結果から何か分かるようなことがあれば補足します。何も分からなければ、終わりにしたいと思います。

kireifishさんのコメント
そこまで言ってくださるなら、もういっそのこと、 ヤフーメッセ、Skype、TeamViewer、Chrome Remote Desktop BETAなどで やり取りして実際に画面を見ていただいたほうがいいかもしれないですね。 cx20さんさえよければの話ですが。 日時と時間帯はcx20さんに合わせます。 こちらのSkypeIDはhatena IDそのままです。 それと、 上記のサンプルプログラムですが、実行エラーになりました…。

kireifishさんのコメント
え・・・まさか・・・cx20さんってGoogleの・・・。え???マジですか???

kireifishさんのコメント
先週のNHK見逃してしまいました、、、。でも、本は買います。

cx20さんのコメント
??? かなり勘違いされているようですが、私は、Google とも Microsoft とも関係ないですよ。 ましてや本なんて出してませんし(苦笑) とりあえず、連絡は Twitter にてお願いします。ID は Hatena ID と同じです。

kireifishさんのコメント
そう言えば、いつも07:40〜50頃投稿されてますね。 こちらはその時間帯でも大丈夫です。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ