9

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

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

これは、さまざまなレベルのパッチや更新プログラムを適用したさまざまなコンピューターで実行できる可能性があるため、.NET やネイティブではないものは避けています。ツールは、ユーザーがインストールしなくても「ただ実行する」必要があります。余分なもの (まあ、サービス パックなしの Windows XP が Windows の最低限必要なバージョンです)。そうは言っても、ツールにバンドルできるサードパーティのものを使用してもかまいませんが、それが巨大でなく、インタラクティブな手順を導入しない限りは問題ありません。理想的には、Windows API の何かが最適ですが、関連するものを追跡できないようです。

現在、このツールは C++ アプリケーションなので、かなり低レベルのものであってもかまいません。

4

3 に答える 3

9

まず、ルート証明書ストアを開く必要があります...

 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);

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

于 2009-03-18T02:07:26.483 に答える
2

CertAddEncodedCertificateToStoreを見ましたか?

于 2009-03-18T01:57:08.863 に答える
2

CertAddEncodedCertificateToSystemStore をチェックすることもできます

于 2012-07-05T17:56:25.130 に答える