none
smart card minidriver测试 RRS feed

  • 问题

  • 下面就是在windows 7系统下运行cmck exec reconnect时遇到的问题,cmck exec certsequences也有类似的问题,在XP下测试均顺利通过。
    在xp下测试程序能够顺利删除容器,可是在win7下测试程序在读完"cardcf"之后就认为容器不存在了,并没有走到CardGetContainerInfo或CardDeleteContainer接口当中,通过日志发现cache文件并没有问题,key上的数据也是正确的,容器是存在的。
    通过查看key上"cmapfile"中的GUID,调用certutil -delkey -csp "Microsoft Base Smart Card Crypto Provider" [Container GUID] 还是提示0x80090016 密钥集不存在,可是在xp下运行certutil则没有问题。

    有人遇到多类似的问题吗?哪位大虾能给解释一下??多谢!

    2010年6月11日 9:13

答案

  • 运行进程的时候选择用管理员身份提升进程权限看看。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 紫柔 2011年3月30日 10:38
    2010年6月11日 16:31

全部回复

  • 运行进程的时候选择用管理员身份提升进程权限看看。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 紫柔 2011年3月30日 10:38
    2010年6月11日 16:31
  • 谢谢Mr. Jiang,不是权限的问题,我确认了。

    我用相同的卡,在XP和Win7上分别运行certutil -key -csp "Microsoft Base Smart Card Crypto Provider",

    在XP下能够枚举出卡上的那个容器,可是在Win7下却没有枚举到容器。我已经启动了所有该启动的服务和打上了所有的系统补丁,还是不行。

    监控API调用,是调用basecsp的CryptAcquireContext删除容器的时候返回NTE_BAD_KEYSET了,函数内部应该是调了下层minidriver的CardReadFile读取cache文件后就认定容器不存在了,不知道Win7下的basecsp是什么逻辑,很苦恼!!!

     

    2010年6月12日 5:55
  • CryptAcquireContext with CRYPT_DELETEKEYSET returns NTE_BAD_KEYSET.
    CryptAcquireContext with CRYPT_NEWKEYSET returns NTE_EXISTS.
    i think maybe it's related to permissions, but what is the access permission to a smart card?
    2010年6月21日 8:18