首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >建立资源管理器上下文以使用智能卡读取器

建立资源管理器上下文以使用智能卡读取器
EN

Stack Overflow用户
提问于 2019-05-31 15:33:46
回答 2查看 4.1K关注 0票数 6

我正在使用VisualStudio2017开发一个c++应用程序。

我正在使用windows库winscard。我从一个简单的项目开始,我将函数SCardEstablishContext称为读取智能卡所需的第一步。

我正在使用的代码片段如下:

代码语言:javascript
运行
复制
LONG resContext = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hSC);
if (resContext != SCARD_S_SUCCESS) {
    printf("Failed\n");
    printf("Error %X\n", resContext);
}

我所知道的是,这个函数使用称为“智能卡”的windows服务来获得执行数据库操作的范围(读/写卡)。

不幸的是,这个简单的应用程序只在windows 7环境中工作(即返回SCARD_S_SUCCESS代码)。在我测试的所有windows 10系统中,返回代码总是与断言的定义0x8010001DL相关联的SCARD_E_NO_SERVICE

智能卡资源管理器没有运行。

在windows 7系统上,程序没有管理权限,在windows 10系统上,我也尝试过使用管理权限,但错误是相同的。

在我测试的每一个windows 10系统中,在测试我的程序之前,我都会手动启动“智能卡”服务,并在测试时检查它是否仍在运行。

在windows 7和windows 10系统中,我都没有连接智能卡读卡器。

我使用的winscard.lib文件随Microsoft Windows SDK版本10.0.17763.0一起来

为了让它与windows 10一起工作,还有其他事情要做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-07 12:21:24

智能卡子系统(和资源管理员)必须“开箱即用”。

尝试安装一些向系统显示虚拟插槽的智能卡驱动程序。

例如,这个

你是通过RDP工作的吗?

票数 3
EN

Stack Overflow用户

发布于 2019-06-06 15:30:21

正如它在文档中所说的

调用应用程序必须对任何数据库操作具有适当的访问权限。

这意味着您应该以管理权限运行程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56397957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档