【dll関連の登録解除等について】お尋ねします。

例)regsvr32_/u_"C:¥Program_Files¥フォルダ名¥フォルダ名¥officeav.dll"(_は半角スペースです)を[ファイル名を指定して実行]に入力したのですが、
C:Program_Files¥フォルダ名¥フォルダ名¥officeav.dllのDllUnregisterServerは失敗しました。戻りコード:0X80070005
とのメッセージが出て、登録解除が出来ませんでした。(ウイルス対策ソフトを含む、起動アプリケーションは全て無効・終了した上で行っています。)

MSサイトで下記関連文書
・Regsvr32_exe COM DLL 登録、及び、登録解除に関する文書
http://support.microsoft.com/kb/207132/ja
・DLL登録解除における、エラーに関する文書
http://support.microsoft.com/kb/832926/ja を読んだのですが、
考えられる原因について、Windowsの仕組等に詳しくない者でも解るもう少し噛み砕いた説明と、今、プログラムを知らない・コードを書く事が出来ない者でも出来る根本的な解決法があれば教えていただきたいです。OSはWindows XP SP2 Homeです。

宜しくお願いいたします。

回答の条件
  • 1人3回まで
  • 登録:2007/06/02 19:46:14
  • 終了:2007/06/04 03:51:55

ベストアンサー

id:cx20 No.2

cx20回答回数604ベストアンサー獲得回数1072007/06/03 16:02:12

ポイント200pt

wnagata さんが提示されているように 0x80070005 は権限がないことを示すエラーです。

通常、このエラーは、例えば、ファイルやレジストリへのアクセス権(読み書きする権限)がない場合に発生します。

<0x80070005 に関する情報>
■ HRESULT (資料ページ) - @秘密工場
http://hyons.hp.infoseek.co.jp/ref/hresult.shtml

80070005(E_ACCESSDENIED) … アクセスが拒否されました(General access denied error)

■ Error message: "0x80070005 Access is denied. You do not have permission to perform the requested operation"
http://support.microsoft.com/kb/816731/en-us

regsvr32 は、コンポーネント(Windows のプログラム部品)のレジストリへの登録ならびに解除(削除)を行う為のツールです。

実際は、regsvr32 は、officeav.dll の中にある DllRegisterServer() / DllUnregisterServer() という関数(機能)を呼び出すことにより、登録、解除(削除)を行います。

DllRegisterServer() により登録されるレジストリ項目としては、以下のようなものがあります。

HKEY_CLASSES_ROOT\NortonAntiVirus.OfficeAntiVirus                             … コンポーネントの ProgID
HKEY_CLASSES_ROOT\CLSID\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}                … コンポーネントの CLSID 
HKEY_CLASSES_ROOT\CLSID\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\InprocServer32 … コンポーネントの場所(パス)
HKEY_CLASSES_ROOT\TypeLib\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}              … コンポーネントの タイプ ライブラリ 

DllUnregisterServer() は、これらのレジストリ項目を削除する処理となっています。

よって、今回のエラー(0x80070005)が発生するケースとして次の2つが考えられます。

・コンポーネント(officeav.dll)にアクセス権(アクセス許可)がなく DllRegisterServer() の呼び出しに失敗している。
・登録されたレジストリ項目にアクセス権(アクセス許可)がなく削除に失敗している。

> 管理者アカウントで操作したのですが。

念のため、Administrator ユーザーで試してもらえないでしょうか?

Windows XP Home は、既定の管理者ユーザーとして Administrator ユーザーが存在しており、セーフモードでのみログオン可能となっています。

セーフモードは PC 立ち上げ時に [F8] キーを押すとメニューが出てくるかと思います。

<Windows XP Home の Administrator アカウントに関する情報>
■ 無いように見えてもAdministratorアカウントは存在する
http://www.nikkeibp.co.jp/sj/column/q/04/03.html
■ Windows XP Home Edition での Administrator の扱いについて
http://support.microsoft.com/kb/418030/ja

それでもエラーが出るようでしたら「AccessEnum」や「Regmon」「Process Monitor」等を使用して具体的な原因の調査を行う必要があります。

■ AccessEnum(ファイルやレジストリのアクセス権を調査するツール)
http://www.microsoft.com/technet/sysinternals/FileAndDisk/Access...
→ ファイル(officeav.dll)やレジストリのアクセス権を特定することが可能です。
■ Regmon(レジストリへのアクセス(読み書き等)をトレースするツール)
http://www.microsoft.com/technet/sysinternals/utilities/regmon.m...
→ レジストリへのアクセスが失敗すると「ACCESS DENIED」と表示されますので、場所を特定することが可能です。
■ Process Monitor(レジストリやファイルへのアクセス(読み書き等)をトレースするツール)
http://www.microsoft.com/technet/sysinternals/utilities/processm...
id:seekinfo

ご回答ありがとうございます。

セーフモードで、Administratorとしてログオン・操作したところ、dll登録解除、及び、再登録が出来ました。

ユーザーアカウント上の管理者と、既定の管理者としてのAdministratorを取り違えていた様です。

勉強しなくてはいけない事は沢山あるのですが、殊に、regsvr32登録・解除の仕組・流れ・場所等、丁寧にご説明いただき、よく理解の助けとなりました。

他、種々有意義な情報をありがとうございました。今後トラブル等が起きた際等、参考にさせていただきたいと思います。

ご回答いただきました御二方様共に

この度はありがとうございました。初心者です。

今後とも質問の機会もあるかと思います。

宜しくお願いいたします。

2007/06/04 03:41:56

その他の回答(1件)

id:wnagata No.1

wnagata回答回数170ベストアンサー獲得回数182007/06/02 20:00:02

ポイント20pt

管理者権限のないアカウントでregsvr32を実行すると、0x80070005のエラーが発生することがあるようです。

http://support.microsoft.com/kb/827659/ja

id:seekinfo

ご回答ありがとうございます。

管理者アカウントで操作したのですが。

他、お考え等ございましたら、お聞かせいただければ幸いです。

(ポイントの振り分けは最後にまとめてさせていただく所存です。)

2007/06/03 00:32:03
id:cx20 No.2

cx20回答回数604ベストアンサー獲得回数1072007/06/03 16:02:12ここでベストアンサー

ポイント200pt

wnagata さんが提示されているように 0x80070005 は権限がないことを示すエラーです。

通常、このエラーは、例えば、ファイルやレジストリへのアクセス権(読み書きする権限)がない場合に発生します。

<0x80070005 に関する情報>
■ HRESULT (資料ページ) - @秘密工場
http://hyons.hp.infoseek.co.jp/ref/hresult.shtml

80070005(E_ACCESSDENIED) … アクセスが拒否されました(General access denied error)

■ Error message: "0x80070005 Access is denied. You do not have permission to perform the requested operation"
http://support.microsoft.com/kb/816731/en-us

regsvr32 は、コンポーネント(Windows のプログラム部品)のレジストリへの登録ならびに解除(削除)を行う為のツールです。

実際は、regsvr32 は、officeav.dll の中にある DllRegisterServer() / DllUnregisterServer() という関数(機能)を呼び出すことにより、登録、解除(削除)を行います。

DllRegisterServer() により登録されるレジストリ項目としては、以下のようなものがあります。

HKEY_CLASSES_ROOT\NortonAntiVirus.OfficeAntiVirus                             … コンポーネントの ProgID
HKEY_CLASSES_ROOT\CLSID\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}                … コンポーネントの CLSID 
HKEY_CLASSES_ROOT\CLSID\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\InprocServer32 … コンポーネントの場所(パス)
HKEY_CLASSES_ROOT\TypeLib\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}              … コンポーネントの タイプ ライブラリ 

DllUnregisterServer() は、これらのレジストリ項目を削除する処理となっています。

よって、今回のエラー(0x80070005)が発生するケースとして次の2つが考えられます。

・コンポーネント(officeav.dll)にアクセス権(アクセス許可)がなく DllRegisterServer() の呼び出しに失敗している。
・登録されたレジストリ項目にアクセス権(アクセス許可)がなく削除に失敗している。

> 管理者アカウントで操作したのですが。

念のため、Administrator ユーザーで試してもらえないでしょうか?

Windows XP Home は、既定の管理者ユーザーとして Administrator ユーザーが存在しており、セーフモードでのみログオン可能となっています。

セーフモードは PC 立ち上げ時に [F8] キーを押すとメニューが出てくるかと思います。

<Windows XP Home の Administrator アカウントに関する情報>
■ 無いように見えてもAdministratorアカウントは存在する
http://www.nikkeibp.co.jp/sj/column/q/04/03.html
■ Windows XP Home Edition での Administrator の扱いについて
http://support.microsoft.com/kb/418030/ja

それでもエラーが出るようでしたら「AccessEnum」や「Regmon」「Process Monitor」等を使用して具体的な原因の調査を行う必要があります。

■ AccessEnum(ファイルやレジストリのアクセス権を調査するツール)
http://www.microsoft.com/technet/sysinternals/FileAndDisk/Access...
→ ファイル(officeav.dll)やレジストリのアクセス権を特定することが可能です。
■ Regmon(レジストリへのアクセス(読み書き等)をトレースするツール)
http://www.microsoft.com/technet/sysinternals/utilities/regmon.m...
→ レジストリへのアクセスが失敗すると「ACCESS DENIED」と表示されますので、場所を特定することが可能です。
■ Process Monitor(レジストリやファイルへのアクセス(読み書き等)をトレースするツール)
http://www.microsoft.com/technet/sysinternals/utilities/processm...
id:seekinfo

ご回答ありがとうございます。

セーフモードで、Administratorとしてログオン・操作したところ、dll登録解除、及び、再登録が出来ました。

ユーザーアカウント上の管理者と、既定の管理者としてのAdministratorを取り違えていた様です。

勉強しなくてはいけない事は沢山あるのですが、殊に、regsvr32登録・解除の仕組・流れ・場所等、丁寧にご説明いただき、よく理解の助けとなりました。

他、種々有意義な情報をありがとうございました。今後トラブル等が起きた際等、参考にさせていただきたいと思います。

ご回答いただきました御二方様共に

この度はありがとうございました。初心者です。

今後とも質問の機会もあるかと思います。

宜しくお願いいたします。

2007/06/04 03:41:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません