我正在开发一个涉及智能卡的应用程序(数字签名)。我们假设在这两个上下文中我们有相同的代码:
我认为如果这两个代码由同一个用户执行,他们就会拥有相同的权限。看来这不是真的。当我尝试使用Windows服务(使用管理员用户执行)时,我会收到
TargetInvocationException
CryptographicException
Can't initialize DLL provider at System.Security.Cryptography.Utils.CreateProvHandle(.
就我在互联网上阅读而言,可能是权限问题之王。控制台应用程序运行正常。
如果Windows服务和控制台应用程序由同一个用户执行,它们之间有什么区别?
使用Windows服务可以获得相同的结果吗?
为解决此问题的人免费提供虚拟啤酒;)
谢谢!
答案 0 :(得分:1)
您是否尝试过将本地服务,网络服务和本地系统作为服务运行?改变这些没有区别?我知道我必须将我的本地服务改为本地系统才能访问我的文件。不确定你是否使用任何文件,但至少要检查一下。
答案 1 :(得分:0)
遗憾的是,我没有为您提供解决方案,但Windows服务的行为与普通程序完全不同。例如,除非您的服务在初始化这些驱动器的服务之后启动,否则您将无法从Windows服务访问网络驱动器。
您可以向服务添加依赖项,使其依赖于您需要的服务,或者最终。这可以解决你的问题,但我无法保证。
答案 2 :(得分:0)
控制台应用程序和导致我头痛的Windows服务之间的一个区别是Windows服务使用 C:\ Windows \ System32 作为当前目录。我不知道这对你的情况是否有帮助,但我想你可以尝试一下:http://igorbrejc.net/development/c/windows-services-and-working-directories