アプリケーションが Windows Vista でタイプ ライブラリを登録するのには、RegisterTypeLib API を呼び出すと、エラー メッセージ:「アクセスが拒否されました」

現象

以下の事例で説明します。Windows Vista ベースのコンピューターで実行されているアプリケーションでは、 HKEY_CLASSES_ROOTレジストリ サブツリーを別のレジストリ サブツリーにマップするしてください。たとえば、 HKEY_CURRENT_USERレジストリ サブツリーにHKEY_CLASSES_ROOTレジストリ サブツリーをマップしようとしました。RegisterTypeLibタイプ ライブラリを登録するための API を呼び出してとすると、次のエラー メッセージが表示される場合があります。
アクセスが拒否されました
さらに、 RegisterTypeLib API では、TYPE_E_REGISTRYACCESS (0x8002801c) の値を返します。

この問題は、ユーザー アカウント制御 (UAC) を有効にすると、制限付きユーザー アカウントでアプリケーションが実行されている場合に発生します。

解決策

Service Pack 情報

この問題を解決するには、Windows Vista 用の最新の service pack を入手します。詳細については、次の文書番号をクリックして、マイクロソフト サポート技術情報の資料をご参照ください。
935791 Windows Vista service pack の入手方法

修正プログラムの情報

サポートされている修正プログラムは、マイクロソフトから入手可能です。ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。この問題が発生しているシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。

修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。このセクションが表示されていない場合は、マイクロソフト カスタマー サービス サポートにお問い合わせのうえ、修正プログラムを入手してください。

注: さらなる問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストの作成が必要な場合があります。この修正プログラムの対象外の追加の質問および問題については、通常のサポート料金が適用されます。一覧マイクロソフト カスタマー サービス & サポートの電話番号または別のサービス リクエストを作成する、次のマイクロソフト Web サイトを参照してください。注: [修正プログラムのダウンロード] フォームには、修正プログラムが提供されている言語が表示されます。お使いの言語が表示されない場合は、その言語の修正プログラムが利用できないためです。この修正プログラムをインストールした後は、修正プログラムを有効にする必要があります。詳細については「修正プログラムを有効にする」セクションを参照してください。

必要条件

Windows Vista のインストールにこの修正プログラムを適用する必要があります。

再起動の必要性

この修正プログラムの適用後、コンピューターを再起動する必要があります。

修正プログラムの置き換えに関する情報

この修正プログラムによって他の修正プログラムが置き換わることはありません。

ファイル情報

修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーン] タブを使用してください。
Windows Vista では、x 86 ベース バージョン
ファイル名ファイル バージョンファイル サイズ日付時刻プラットフォーム
X86_4bbe5d294834975fb80c47470752adb1_31bf3856ad364e35_6.0.6000.20604_none_dea9a3d5aecfc0a3.manifest該当なし70223-May-200719:26該当なし
X86_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_bba787f5176daa36.manifest該当なし88,60923-May-200719:28該当なし
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86
ファイル名ファイル バージョンファイル サイズ日付時刻プラットフォーム
X86_4bbe5d294834975fb80c47470752adb1_31bf3856ad364e35_6.0.6000.20604_none_dea9a3d5aecfc0a3.manifest該当なし70223-May-200719:26該当なし
X86_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_bba787f5176daa36.manifest該当なし88,60923-May-200719:28該当なし
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86
Update.mum該当なし2,00123-May-200719:26該当なし
Windows Vista では、64 ビット バージョン
ファイル名ファイル バージョンファイル サイズ日付時刻プラットフォーム
Amd64_4a6574fa45a2d59d7249caa900399476_31bf3856ad364e35_6.0.6000.20604_none_cd312e3fb1af0597.manifest該当なし70623-May-200719:26該当なし
Amd64_65563c6fd47be510b29634938ca65f92_31bf3856ad364e35_6.0.6000.20604_none_21b539ccf0659813.manifest該当なし70623-May-200719:26該当なし
Amd64_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_17c62378cfcb1b6c.manifest該当なし86,22723-May-200719:33該当なし
Package_1_for_kb935200~31bf3856ad364e35~amd64~~6.0.1.0.mum該当なし1,79523-May-200719:26該当なし
Package_2_for_kb935200~31bf3856ad364e35~amd64~~6.0.1.0.mum該当なし2,01223-May-200719:26該当なし
Update.mum該当なし1,90923-May-200719:26該当なし
Wow64_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_221acdcb042bdd67.manifest該当なし86,47523-May-200719:33該当なし
Oleaut32.dll6.0.6000.20604867,84023-May-200705:54x64
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86

状況

マイクロソフトでは、対象セクションに記載されているマイクロソフト製品の問題があること確認していますこの問題は、Windows Vista Service Pack 1 で最初に修正されました

詳細

修正プログラムを有効にします。

この修正プログラムをインストールした後、修正プログラムを有効にするのに次の方法のいずれかを使用する必要があります。

方法 1

この修正プログラムは、新しい API を追加します。 アプリケーションでは、 RegisterTypeLib API を呼び出し、前に、アプリケーションは、 RegisterTypeLIb API オーバーライドの適切なマッピングを使用するを有効にするのには、void のOaEnablePerUserTLibRegistration関数を呼び出すことができます。OaEnablePerUserTLibRegistration関数は、Oleaut32.dll ファイルからエクスポートされます。GetProcAddress関数を使用して、実行時の動的リンクを使用して、このファイルを参照する必要があります。 GetProcAddress関数、および実行時の動的リンクについての詳細については、次のマイクロソフト Web サイトを参照してください。

方法 2

修正プログラムをインストールした後、 RegisterTypeLib API は、 OAPERUSERTLIBREG環境変数を確認します。OAPERUSERTLIBREG変数の値が 1 の場合は、 RegisterTypeLIb API は適切なオーバーライドのマッピングを使用します。DLLMain関数の初期化中にこの環境変数が読み取られるために、アプリケーションを実行する前に、この環境変数を設定する必要があります。これを行うには、コマンド プロンプトで次のコマンドのいずれかを実行します。
  • 設定 OAPERUSERTLIBREG = 1
  • cmd.exe/c を開始"OAPERUSERTLIBREG の設定 = 1 & & MyApp.exe"

    MyApp.exeのプレース ホルダーは、実行するアプリケーションを指します。
のみ、最初のコマンドは、環境変数を設定します。2 番目のコマンドは、環境変数を設定してアプリケーションが実行されます。最初のコマンドを使用する場合は、このコマンド プロンプトでアプリケーションを実行することもする必要があります。
詳細については、次の文書番号をクリックして、マイクロソフト サポート技術情報の資料をご参照ください。

824684マイクロソフトのソフトウェア更新プログラムを記述するために使用される一般的な用語説明

関連情報

HKEY_CLASSES_ROOTレジストリ サブツリーの詳細については、次のマイクロソフト Web サイトを参照してください。RegisterTypeLib API の詳細については、次のマイクロソフト Web サイトを参照してください。
プロパティ

文書番号:935200 - 最終更新日: 2017/02/02 - リビジョン: 1

Microsoft COM+ 1.5, Windows Vista Enterprise, Windows Vista Enterprise 64-bit edition, Windows Vista Ultimate, Windows Vista Ultimate 64-bit edition, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Home Premium, Windows Vista Home Premium 64-bit edition, Windows Vista Home Basic, Windows Vista Home Basic 64-bit edition

フィードバック