既にご承知のとおり、Inventor、AutoCAD、Revit などのオートデスクの主要製品では、セキュリティ向上を目的に、2016 バージョン以降、アドイン アプリケーションにデジタル署名を施すことを推奨しています。AutoCAD については、AutoCAD 2016 のセキュリティとアドインのデジタル署名 のブログ記事で概要について、アドイン ロード時の警告ダイアログ抑止 のブログ記事で未署名のアドイン アプリケーションに対するセキュリティ警告ダイアログの抑止方法について、それぞれお伝えしています。
今回は、Inventor アドインについて、同様の内容をご案内しておきたいと思います。
Inventor のアドイン ロード メカニズム
Inventor のアドイン ロードに関しては、日本語版 Inventor 2020 API プログラミング用ヘルプ からダウンロード可能な「Inventor 2020 API プログラミング用ヘルプ」の Inventor API のユーザ マニュアル >> API の概要 >> Inventor のアドインを作成する に記載されています。
ここで重要なのは、次の点です。
アドインを Inventor に認識させる
Inventor は、起動されるたびに、インストールされているアドインの検索を開始し、そのアドインをロードします。バージョン 2012 より前の Inventor では、アドインを検索するのにレジストリが使用されていました。このレジストリベースの検索は、レガシー アドインで引き続きサポートされていますが、Inventor に既知のアドインを作成するという新しいレジストリ フリーの方法がサポートされるようになり、使用する方法として推奨されています。アドイン テンプレートを使用してアドインを作成すると、レジストリ フリーのアドインが作成されます。
Inventor がアドインを検出できるようにするには、いくつかの異なるフォルダのいずれかに、特殊なファイルを配置する必要があります。このファイルは、アドインについて説明したもので、アドイン dll がコンピュータのどこにあるかを示します。Inventor は、起動されると、これらのフォルダをスキャンし、これらのファイルを読み込んで、ロードするアドインを判断します。
<中略>
ファイルの配置場所
ここまでで、アドイン dll が用意され、.addin ファイルが作成されました。Inventor がアドインを検索して、ロードできるように、これらのファイルの配置場所を理解する必要があります。
次の 4 つの場所がサポートされています。アドインのニーズに応じて、次の 4 つのいずれかを選択することができます。.addin ファイルは、次の 4 つの場所またはそのサブフォルダのいずれかに配置できます。各パスの “%XXXX%” 部分は、オペレーティング システムで定義された変数です。エクスプローラーを使用する場合は、パスの一部として入力できます。エクスプローラーでこれが評価され、変数によって定義される実際のパスが使用されます。
- すべてのユーザ、バージョン非依存
Windows 7/8.1/10: %ALLUSERSPROFILE%\Autodesk\Inventor Addins\ - すべてのユーザ、バージョン依存
Windows 7/8.1/10: %ALLUSERSPROFILE%\Autodesk\Inventor 20xx\Addins\ - ユーザごと、バージョン依存
Window 7/8.1/10: %APPDATA%\Autodesk\Inventor 20xx\Addins\ - ユーザごと、バージョン非依存
Window 7/8.1/10: %APPDATA%\Autodesk\ApplicationPlugins\
アドインを配置する場所を決定する際に考慮すべき事項がいくつかあります。すべてのユーザがアクセスできる場所を選択する場合は、アドインをインストールするのに管理者権限が必要になります。ほとんどの場合、複数のユーザでコンピュータを共有することはないので、通常はユーザごとのインストレーションで十分です。
Inventor の各バージョンについてアドインを更新しようとしている場合は、ユーザが使用する Inventor のバージョン用に記述され、このバージョンでテストされたアドインにのみアクセスできるように、アドインをバージョン依存にするとよいでしょう。API の上位互換性を実現するためにかなりの労力が注がれているため、新しいバージョンの Inventor でも古いバージョンのアドインを実行できるはずです。このため、新しいバージョンの Inventor がリリースされてもアドインが引き続き動作すると想定して、特定のバージョンに結びつけずにアドインを供給できます。
また、.addin ファイルでアドインが互換性を持つバージョンを指定できるため、バージョンに依存する .addin の場所を使用でき、.addin ファイルを使用してバージョンをコントロールできます。
つまり、Inventor は、起動時に特定のパスにある .addin ファイルを検索して、LoadBehavior の内容に応じて、記載されているアドイン アプリケーションをロードしようとする、という点です。
Inventor の振る舞い
Inventor がアドイン アプリケーションをロードする際、もし、Inventor アドイン アプリケーション ファイル(.dll)にデジタル署名が施されていないと、一旦、アドインのロードをブロックして次のセキュリティ警告ダイアログを表示します。

この警告ダイアログ上で、[アドイン マネージャを起動] ボタンをクリックすると、[アドイン マネージャ] ダイアログを表示して、ブロックされたアドイン アプリケーション ファイルのブロックを解除、アドインをロードすることが出来ます。

一度ブロックを解除してしまと、その記録は暗号化された AddInLoadRules ファイルに記入されて、以後、Inventor は前述のセキュリティ警告ダイアログを表示しなくなります。AddInLoadRules ファイルはバイナリ ファイルで、仕様は公開していないので、ファイルを開いて内容を書き換えるようなことは出来ません(サポートされません)。
なお、Inventor のインストール直後には AddInLoadRules ファイルは存在しません。この AddInLoadRules ファイルは、[アドイン マネージャ] ダイアログでブロックされたアドインのブロック解除をすると、C:\Users\<username>\AppData\Roaming\Autodesk\Inventor 2020\Addins\ フォルダ直下に生成されます。このため、一度、アドイン アプリケーションのロードをブロック解除した環境でも、AddInLoadRules ファイルを削除してしまうと、次回の Inventor 起動から、再び、セキュリティ警告ダイアログが表示されるようになります。
セキュリティ警告ダイアログの抑止
手動操作ですが、前述のとおり、[アドイン マネージャ] ダイアログを開いてブロックされたアドイン アプリケーション ファイルのブロックを解除してしまえば、セキュリティ警告ダイアログの表示を抑止することが出来ます。
もし、セキュリティ警告ダイアログの表示を一切、除去してしまいたいなら、次の 2 つの方法を考えることが出来ます。
アドイン ファイルにデジタル署名を施す:
セキュリティ上、推奨される方法です。X.509 規格に準拠しているデジタル証明書を購入の上、Microsoft 社が提供する SignTool.exe を利用して、アドイン ファイルに署名してください。
AddInLoadRules.xml を設定する:
セキュリティ上、非推奨の方法ですが、アドインの社内利用などでデジタル証明書の購入が難しい場合などは有効化と思います。
Inventor のインストール フォルダ直下の Preferences フォルダ(%INSTALLDIR%\Preferences、C:\Program Files\Autodesk\Inventor 20xx\Preferences)直下の AddInLoadRules.xml ファイルを開いて、次のように、<TrustedPath > タグでアドイン アプリケーション ファイルを配置しているパスを追加すると、Inventor が未署名のアドイン ファイルを見つけてもロードするようになります。
例:<TrustedPath Policy=”Allow”>C:\Users\<username>\AppData\Roaming\Autodesk\ApplicationPlugins\</TrustedPath>
AddInLoadRules.xml ファイルは ASCII 形式なので、メモ帳などのテキスト エディタで開いて内容を編集することが出来ます。詳細は、Inventor のオンラインヘルプ「アドインの動作をコントロールする(http://help.autodesk.com/view/INVNTOR/2020/JPN/?guid=GUID-84B221D3-979B-420D-B955-9DCBDC0C5619)」を確認してみてください。
なお、ファイルが保存されているパスへの書き込みには、管理者権限が必要なのでご注意くさい。もし、AddInLoadRules.xml ファイルの上書き保存時に次のようなエラーが表示されたら、管理者権限がないことを意味しています。

このような場面では、テキストエディタの起動時に [管理者として実行] で起動すると、内容を編集、上書き保存することが出来ます。

By Toshiaki Isezaki

Leave a Reply