Windows服务和控制台应用程序之间的权限差异

时间:2010-06-02 10:03:27

标签: c# windows windows-services permissions windows-server-2003

我正在开发一个涉及智能卡的应用程序(数字签名)。我们假设在这两个上下文中我们有相同的代码:

  • 控制台应用程序,由管理员用户执行
  • Windows服务,由管理员用户执行

我认为如果这两个代码由同一个用户执行,他们就会拥有相同的权限。看来这不是真的。当我尝试使用Windows服务(使用管理员用户执行)时,我会收到

TargetInvocationException
CryptographicException

Can't initialize DLL provider at System.Security.Cryptography.Utils.CreateProvHandle(.

就我在互联网上阅读而言,可能是权限问题之王。控制台应用程序运行正常。

  • 如果Windows服务和控制台应用程序由同一个用户执行,它们之间有什么区别?

  • 使用Windows服务可以获得相同的结果吗?

为解决此问题的人免费提供虚拟啤酒;)

谢谢!

3 个答案:

答案 0 :(得分:1)

您是否尝试过将本地服务,网络服务和本地系统作为服务运行?改变这些没有区别?我知道我必须将我的本地服务改为本地系统才能访问我的文件。不确定你是否使用任何文件,但至少要检查一下。

答案 1 :(得分:0)

遗憾的是,我没有为您提供解决方案,但Windows服务的行为与普通程序完全不同。例如,除非您的服务在初始化这些驱动器的服务之后启动,否则您将无法从Windows服务访问网络驱动器。

您可以向服务添加依赖项,使其依赖于您需要的服务,或者最终。这可以解决你的问题,但我无法保证。

答案 2 :(得分:0)

控制台应用程序和导致我头痛的Windows服务之间的一个区别是Windows服务使用 C:\ Windows \ System32 作为当前目录。我不知道这对你的情况是否有帮助,但我想你可以尝试一下:http://igorbrejc.net/development/c/windows-services-and-working-directories