2009-03-18 22 views
8

MicrosoftのTSゲートウェイを使用して新しいリモートアクセスソリューションをセットアップしました。これは、エンドユーザーの代わりにいくつかの手間を要しますCA証明書、RDP 6.1クライアントの要件など)。Win32でコードを使用してルートCA証明書をインストールする

このセットアッププロセスをできるだけ簡単にするために、私はこれらのタスクをすべて自動的に実行するプログラムを作成したいと考えています。私はそのほとんどが動作していますが、ルートCA証明書をWindows証明書ストアにインポートする方法については完全にはわかりません。

これはさまざまなレベルのパッチとアップデートを備えたさまざまなコンピュータ上で実行される可能性があるため、.NETとネイティブではないものは明確にはっきりしています。ユーザーは余分なものをインストールする必要があります(Windows XP、サービスパックなし、Windowsの最低必要バージョン)。言い方をすれば、ツールで束ねることができるのであれば、それが巨大でない限り第三者を使用しても構いません。理想的には、Windows APIの中で最も優れたものがありますが、関連するものを追跡することはできません。

現在のところ、このツールはC++アプリケーションですので、かなり低レベルのものであれば大丈夫です。

答えて

7

あなたは、ルート証明書ストアをオープンする必要がまず...

HCERTSTORE hRootCertStore = CertOpenSystemStore(NULL,"ROOT"); 

次に、このようなCertAddEncodedCertificateToStoreとして、CertAdd関数の1つを使用して証明書を追加します。

CertAddEncodedCertificateToStore(hRootCertStore,X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,pCertData,cbCertData,CERT_STORE_ADD_USE_EXISTING,NULL); 

pCertDataとcbCertDataは、おそらくあなたは、ファイル(証明書がファイルになる場合、または、あなたのアプリケーションでそれが含まれるかどうかはわかりません)から読み込まれた証明書データを指します。

はその後で...

CertCloseStore(hRootCertStore,0); 

NOTEストアを閉じる:ユーザーとして実行する場合は、このコードは、ユーザのルートストアではなく、コンピュータのに証明書をインストールします。また、インポートを承認するには、ユーザーが理解して「はい」を選択する必要があるという警告ダイアログが表示されます。セットアッププログラムがこのコードをシステムアカウントで実行できる場合、インポートはコンピュータのルートストアに影響し、警告ダイアログは表示されません。

0

MSDNのWindows SDKのいくつかのC++サンプル

ちょうどそれらをコピーしてください。

2

さらに、CertAddEncodedCertificateToSystemStoreをチェックアウトすることもできます。

関連する問題