Top / 技術情報 / 「キー セットがありません」というエラーについて

エラーコード 0x80004005 ?

とある案件で S/MIMEを実装したところ、先方から「キー セットがありません」というエラーが発生すると連絡を受けた。

確認してみると、環境によって Win32Exceptionが発生することが分かった。エラーコードは0x80004005。

System.ComponentModel.Win32Exception: キー セットがありません。
   場所 b9..ctor()
   場所 cc.c(MessageStream A_0)
   場所 cc.f(MessageStream A_0)
   場所 Dart.PowerTCP.SecureMail.MessageStream.ToSmime(EncodingMethod  encodingMethod, Certificate& signingCertificate, 
SigningMethod signingMethod, ArrayList encryptingCertificates, EncryptingMethod encryptingMethod)
  :
  :

ご覧の通り、実際には Secure Mail 2.0Jを呼び出しているのだが、中の方で例外が発生している。ググってみてもはっきりした答えが得られず、サポートに問い合わせるも「証明書は正しくインストールされていますか?」という程度の回答しか戻ってこない。

仕方がないのでよくよく調べていくと、b9..ctor()内で CryptAcquireContextを呼び出していて、どうやら、デフォルトのキーコンテナが存在しない場合に Win32Exceptionを throwするらしい、というところまで分かった。

CSP(CryptoGraphy Service Provider)の
デフォルトのキーコンテナは初めからあるわけではない!

ということで、事前にデフォルトのキーコンテナをチェックし、なければ作成する Win32コンソールアプリを噛ませたらあっさり解決。

納品用プログラムとは別に、汎用的に使えるように機能を追加、デフォルトではチェックだけ行い、オプションでキーコンテナの作成や削除を行うコンソールアプリを開発した。 誰かの役に立てば幸いである。
Check&Create KeyContainer

DOSプロンプトから…

C:\>ckc.exe /?
デフォルトのキーコンテナの有無を確認します。
オプションでキーコンテナを削除・作成します。

CKC [/S] [/C] [/D]

 /S   各種メッセージを表示しません。
 /C   デフォルトのキーコンテナがなかった場合に作成します。
 /D   デフォルトのキーコンテナがあった場合に削除します。

終了コード:
  0:デフォルトのキーコンテナは既にあります。
 -1:デフォルトのキーコンテナはありません。
  1:(/C オプション指定時) デフォルトのキーコンテナを作成しました。
 -1:(/C オプション指定時) デフォルトのキーコンテナの作成に失敗しました。
  1:(/D オプション指定時) デフォルトのキーコンテナを削除しました。
 -1:(/D オプション指定時) デフォルトのキーコンテナの削除に失敗しました。
C:\>ckc.exe
デフォルトのキーコンテナは既にあります。

C:\>ckc.exe /d
デフォルトのキーコンテナを削除しました。

C:\>ckc.exe /c
デフォルトのキーコンテナを作成しました。

C#から…

ProcessStartInfo procInfo = new ProcessStartInfo();
procInfo.FileName = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\ckc.exe";
procInfo.Arguments = "/c";
procInfo.CreateNoWindow = true;
procInfo.UseShellExecute = false;

Process proc = Process.Start(procInfo);
proc.WaitForExit();

if (proc.ExitCode == -1)
{
    throw new Exception("デフォルトのキーコンテナの作成に失敗しました。");
}

(以下、通常処理)

グレープシティの担当にも同様の報告をしたが、果たして改善されるだろうか…

コメントをどうぞ



*1 , http://buycialisgenericcheapmediconline.com buy cialis generic, %-
*2 , http://buycialismedonlinerx.com purchase cialis, 605, http://buycialischeaponlinemedrx.com buy generic cialis online, %
*3 (, <a href=" http://pdloansnow.com/">payday cash loans</a>, wleqke, <a href=" http://fastloanspd.com/">http://fastloanspd.com/</a>, htztrv, <a href=" http://loanspayday.fr/">http://loanspayday.fr/</a>, 89992, <a href=" http://payday4u.re/">cash advance loan</a>, >:
*4 , <a href=" http://loanspayday.fr/">payday advance loans</a>, 5359, <a href=" http://get24-7loans.com/">http://get24-7loans.com/</a>, leys, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, 331, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, ceyok, <a href=" http://payday4u.re/">fast payday loan</a>, 479, <a href=" http://fastloanspd.com/">http://fastloanspd.com/</a>, jjab, <a href=" http://loanspayday.fr/">payday cash loan</a>, =], <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, 607490, <a href=" http://fastloanspd.com/">http://fastloanspd.com/</a>, >:-]]], <a href=" http://fastloanspd.com/">one hour loans</a>, 18594, <a href=" http://payday4u.re/">http://payday4u.re/</a>, 335, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, 927098, <a href=" http://get24-7loans.com/">http://get24-7loans.com/</a>, rpn, <a href=" http://payday4u.re/">fast payday loans</a>, exnl, <a href=" http://fastloanspd.com/">http://fastloanspd.com/</a>, eivy, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, 979108, <a href=" http://payday4u.re/">http://payday4u.re/</a>, >:
*5 , <a href=" http://pdloansnow.com/">payday loans massachusetts</a>, 340, <a href=" http://pdloansnow.com/">no fax payday loans</a>, lohvul, <a href=" http://loanspayday.fr/">payday loan no fax</a>, 8], <a href=" http://get24-7loans.com/">payday loan no teletrack</a>, lgleu, <a href=" http://loanspayday.fr/">http://loanspayday.fr/</a>, hxfrf, <a href=" http://pdloansnow.com/">payday loans no fax</a>, gagwh, <a href=" http://loanspayday.fr/">http://loanspayday.fr/</a>, 769, <a href=" http://payday4u.re/">http://payday4u.re/</a>, fli, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, wtt, <a href=" http://pdloansnow.com/">cash til payday loans</a>, 6539, <a href=" http://get24-7loans.com/">http://get24-7loans.com/</a>, =
*6 , <a href=" http://get24-7loans.com/">online payday loan</a>, %PP, <a href=" http://pdloansnow.com/">http://pdloansnow.com/</a>, :((, <a href=" http://payday4u.re/">http://payday4u.re/</a>, jwpbp, <a href=" http://get24-7loans.com/">http://get24-7loans.com/</a>, 192, <a href=" http://payday4u.re/">http://payday4u.re/</a>, 5522, <a href=" http://loanspayday.fr/">payday loans 1 hour</a>, hws, <a href=" http://get24-7loans.com/">http://get24-7loans.com/</a>, znvmy, <a href=" http://loanspayday.fr/">http://loanspayday.fr/</a>, %-
*7 , http://paydayloansfins.com/ fast payday loans no credit check, 255536, http://loansonlinepaydays.com/ online payday loans no teletrack, =-(, http://loansonlinepaydays.com/ payday loans in pa, %]]], http://loansonlinepaydays.com/ payday loans online, :-
*8 , http://payday4u.re/ payday loan advance, 48871, http://pdloansnow.com/ Payday Cash, hpjvs, http://pdloansnow.com/ cheap payday loans online, 1712, http://get24-7loans.com/ http://get24-7loans.com/, >:-
*9 , http://loanspayday.fr/ http://loanspayday.fr/, 8

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2013-01-04 (金) 07:43:31