RegAsm.exe で .NET で自作したライブラリを登録/解除する
RegAsm.exe で .NET で自作したライブラリを登録/解除する
COM コントロールはレジストリに登録しないと利用できません。
.NET で自作したクラスライブラリを登録/解除するには、アセンブリ登録ツール(RegAsm.exe)を使います。
アセンブリ登録ツール(RegAsm.exe)の場所
RegAsm.exe は .NET Framework のフォルダ内にあります。
もし以下のようにバージョン2と4のフォルダが両方あった場合、作成した COM コンポーネントのターゲットフレームワークに合う方を使っておけば良いでしょう。
- C:\Windows\Microsoft.NET\Framework\v4.0.30319
- C:\Windows\Microsoft.NET\Framework\v2.0.50727
デフォルトではパスが通っていないので、フルパス指定するかパスを通すかして使います。
留意事項
RegAsm.exe を使う前に、次の2点に気を付けてください。
-
コマンドプロンプトを管理者として起動しておく
→レジストリをいじるので権限が必要 -
登録/解除するライブラリのあるフォルダをカレントにしておく
→アセンブリが見つからない、エラーを避けるため。
フルパスでファイルを指定する手もありますが、dll と tlb の2つをフルパスで書くのは面倒でしょう?
アセンブリをレジストリに登録する
アセンブリファイルを指定してコマンドを実行します。
RegAsm.exe assemblyFile /tlb[:typeLibFile]
- /tlb[:typeLibFile]
-
指定したアセンブリからタイプライブラリを出力します。
typeLibFile を指定しない場合、アセンブリファイルのベース名 + “.tlb” の名前でタイプライブラリが出力されます。
指定した場合はその名前でタイプライブラリが出力されます。
たとえば、/tlb:Foo.tlb とした場合、タイプライブラリのファイル名は Foo.tlb になります。
たとえば HelloWorldCs.dll を登録する場合、コマンドと出力結果は以下のようになります。
C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe HelloWorldCs.dll /tlb
Microsoft .NET Framework Assembly Registration Utility 4.8.4084.0
for Microsoft .NET Framework Version 4.8.4084.0
Copyright (C) Microsoft Corporation. All rights reserved.
型は正常に登録されました。
アセンブリは 'C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug\HelloWorldCs.tlb' にエクスポートされ、タイプ ライブラリ は正常に登録されました。
アセンブリの登録を解除する
/unregister オプションを付けて実行することで、アセンブリの登録を解除できます。
RegAsm.exe assemblyFile /unregister /tlb
たとえば HelloWorldCs.dll の登録を解除する場合、コマンドと出力結果は以下のようになります。
C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe HelloWorldCs.dll /unregister /tlb
Microsoft .NET Framework Assembly Registration Utility 4.8.4084.0
for Microsoft .NET Framework Version 4.8.4084.0
Copyright (C) Microsoft Corporation. All rights reserved.
型は正常に登録が解除されました。
タイプ ライブラリ 'C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug\HelloWorldCs.tlb' を正しく登録解除しました。
「入力アセンブリ ‘〈アセンブリファイル〉’ またはその依存関係の 1 つが見つかりません。」の対処方法
実行時に「RegAsm : error RA0000 : 入力アセンブリ ‘〈アセンブリファイル〉’ またはその依存関係の 1 つが見つかりません。」が起きた場合、アセンブリファイルが参照できていない可能性があります。
C:\Users\username>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe HelloWorldCs.dll /unregister /tlb
Microsoft .NET Framework Assembly Registration Utility 4.8.4084.0
for Microsoft .NET Framework Version 4.8.4084.0
Copyright (C) Microsoft Corporation. All rights reserved.
RegAsm : error RA0000 : 入力アセンブリ 'HelloWorldCs.dll' またはその依存関係の 1 つが見つかりません。
次のいずれかの対処をして、もう一度コマンドを実行します。
-
アセンブリファイルのあるフォルダをカレントにする
C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe HelloWorldCs.dll /unregister /tlb
-
アセンブリファイルの指定をフルパスにする
C:\Users\username>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug\HelloWorldCs.dll /unregister /tlb
「要求されたレジストリ アクセスは許可されていません。」の対処方法
実行時に「RegAsm : error RA0000 : 要求されたレジストリ アクセスは許可されていません。」が起きた場合、コマンドプロンプトが管理者として実行されていない可能性があります。
C:\ComExample\HelloWorldCs\HelloWorldCs\bin\Debug>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe HelloWorldCs.dll /unregister /tlb
Microsoft .NET Framework Assembly Registration Utility 4.8.4084.0
for Microsoft .NET Framework Version 4.8.4084.0
Copyright (C) Microsoft Corporation. All rights reserved.
RegAsm : error RA0000 : 要求されたレジストリ アクセスは許可されていません。
コマンドプロンプトを管理者として実行し、もう一度コマンドを実行します。
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事にコメントをしてみませんか?