Windows 8以降でDriver Development Wizardの* .infファイルを使用する

更新しました Jan 28, 2023

環境

ドライバ

  • NI-VISA

オペレーティング・システム

  • Windows

Windows 8またはそれ以降のコンピュータにドライバをインストールしたいのですが、Driver Development Wizardで作成するINFファイルに対してどのように署名を追加すればよいですか?

Driver Development Wizard(DDW)によって生成されたINFファイルは、デバイスをNI-VISAにバインドする際に署名されません。 Windows 8またはそれ以降のコンピュータでは、INFファイルに署名を付けてからマシンにインストールする必要があります。

DDWによって生成されたINFをWindows 8またはそれ以降マシンにインストールするには、次の手順を実行します。


 

1. INFファイルからカタログファイル(.cat)を生成する

これは、Microsoft社が提供しているWindows Driver Kit(WDK)に含まれているInf2Catツールを使用して行うことができます。このツールは、通常、C:¥Program Files(x86)¥Windows Kits¥8.0¥bin¥x86にインストールされます。このツールで使用するパラメータの1つに、生成するカタログがサポートする必要があるOSのリストがあります。このツールの旧バージョンはWindows 8固有の値を受け入れないため、Windows 8をサポートするWDKバージョン8.0が必要です。コマンドプロンプトからInf2Catツールを含むディレクトリに移動します。また、可能であれば、コマンドプロンプトを管理者権限で実行することをお勧めします。

構文: Inf2Cat /driver:<path> /os:<os1>[,<os2>]...

<path>: INFファイルのあるディレクトリのパスです。INFファイルは、ディレクトリ内に存在する必要があります(Cドライブ内にスタンドアロンファイルなど)。INFファイルは、生成するCATファイルの名前がすでに存在します。

<osn>: 対応OS(2000、XP_X86、Vista_X64、7_X86、8_X64、10_X86、10_X64など)
対応OSに関する詳細については、外部リンク: Microsoft Dev Zone: Inf2Catを参照してください。

出力: <path>に*.infファイルが含まれている場合、このコマンドは対応する*.catファイルを作成します。



 

2. *.catファイルの署名に用いる証明書を取得もしくは作成する

理想的には、認証局(CA:Certification Authority)に申請して、すべてのデバイスとINFファイルに署名するために使用できる証明書を取得する必要があります。証明書には通常、公開鍵と秘密鍵のペアがあります。公開鍵は、署名付きバイナリ/INFファイルを使用する必要となるクライアントへ配布されます。秘密鍵は、証明書の所有者のみが利用できるもので、署名が必要となる如何なるものにも署名する際に使用します。秘密鍵は、保護して配布すべきではありません。証明書の所有者を確認するためには秘密鍵で十分です。

このプロセスにはいくつか短所があります。
  1. 証明書を取得して使用するためにCAに対して年会費を払う必要があります。
  2. 顧客に対してINFファイルを配布せず自身のコンピュータでのみ使用する必要がある場合、このプロセスは現実的ではありません。(ただし、別の理由で証明書を購入する場合は例外です。)
CAから証明書を購入したくない場合の回避策は、パーソナル証明書を作成することです。この証明書は秘密鍵と同様に、証明書で署名、及びCATファイルを生成する開発マシンにインストールすることができます。次に、*.infファイル、署名付き*.catファイル、および公開鍵のコピー(証明書のフォーム内)を開発システムに移します。まず信頼された証明書としてパブリック証明書をインストールして、それから証明書に署名付きの*.catファイルを持つ*.infをインストールします。これらのパーソナル証明書(このケースでは拡張子は.pfx)は、Adobe Reader、Java SDK、およびLinuxディストリビューション用OpenSSLのようなサードパーティ製のアプリケーションを使用して生成することができます。



 

3. 証明書を使用して.catに署名する

*.catファイルが生成されてプライベート証明書が開発マシンにインストールされると、*.catファイルは証明書を使用して署名することができます。Microsoft社は、SignToolとよばれるINFファイルに署名するツールを提供しています。このツールは、WDKに含まれています。Inf2Catツールと同じフォルダに保存されています。C:\Program Files (x86)\Windows Kits\8.0\bin\x86 WDKはSignToolを使用するために特定のVisual Studioバージョンが必要となることに注意してください。この要件については、WDKダウンロードページに記載されています。このツールは、Windows Platform SDKからも利用可能です。Windows 7 SDKをインストール後、C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Binに保存されています。

構文: signtool sign options <filename(s)>

例:
  • 公開鍵/秘密鍵のペアが1つのファイルである場合(.pfx形式):    
signtool sign /f C:\mycertificate.pfx /p mypfxpassword c:\mycatfile.cat
  •    キーが開発マシンにインストールされる場合:
signtool sign /n mycertificatename C:\mycatfile.cat



 

4. INFをインストール前にターゲットのWindows 8以降のマシンにパブリック証明書をインストールする

一度*.catファイルが秘密鍵で署名されると、*.infファイル、署名された*.catファイルおよびパブリック証明書は一緒に配布することが可能です。マシン*.infファイルをインストールするには、始めにパブリック証明書をインストールする必要があります。証明書をCAから取得した場合、すでに「信頼されたルートCA」となる信頼された一連の証明書があります。それ以外にパーソナル証明書がある場合に、「信頼されたルート」としてインストールする必要があります。インストールするには、パブリック証明書(サードパーティーアプリケーションで作成した*.cer)を右クリックして証明書をインストールするを選択します。ダイアログが表示されたら、ローカルマシンを選択して次へを押します。以下のダイアログで以下のストアですべての証明書を発行するを選択して、参照ボタンを押し、リストから信頼されたルート証明機関を選択します。OKを押してインポートウィザードに戻り次へを押し、終了を押します。確認ダイアログが表示されたら、OKを押します。


システムにインストールされている証明書を表示する方法は以下のとおりです。
  1. mmcコマンドを実行してMicrosoft Management Console(MMC)を起動します。
  2. メニューからFile>>Add/Remove Snap-in...を選択します。
  3. ダイアログで証明書をクリックして、ダイアログの真ん中にあるAddボタンを押します。
  4. 表示されたダイアログでコンピュータアカウントのラジオボタンを選択して、次へおよび終了を押します。
  5. OKを押します。


MMCで、現在のユーザに対してインストールされている証明書を確認することができます。インポートされた証明書は、信頼されたルート証明機関の下にある必要があります。存在しない場合は、証明書(現在のユーザ)を右クリックして、証明書を見つける.... から見つかった項目を選択すると、信頼されたルート証明機関をコピー(もしくは切り取り)および貼り付けをおこなうことが可能です。

Additional Information

Windows 8以降では、INFファイルをマシンにインストールする前に署名する必要があります。Windows 7はこれを必要としません。テスト目的でNI VISAでUSBデバイスを使用している場合は、USB計測器制御チュートリアルページの手順をおこなうことでWindows 7を試すことができます。