2011-07-14 130 views
3

我有一个WCF服务托管在WinForms应用程序中。此WCF服务在Visual Studio 6上调用用ATL编写的COM组件。这在Windows XP上运行得很好。然而调用GetFileAttributes时,在Windows 7中的COM组件失败。它说,尽管它的路径不存在。这是一个映射的网络驱动器。我能想到的唯一原因是托管WCF服务的WinForms应用程序必须右键单击并以管理员身份运行。然后,我假设COM组件有效地获得了相同的提升权限,因此登录到计算机的用户下存在的映射驱动器不再存在,就应用程序而言。WCF适用于XP但不适用Windows 7

这是一个有效的假设,如果有的话,我的解决方案是什么?

回答

1

在Windows 7(及其等价物)上,当您以管理员身份运行时,会丢失映射的驱动器。这是因为您基本上切换到另一个登录令牌,并且网络驱动器仅映射到非管理员。

有几种方法可以解决这个问题,请参阅讨论herehere

另外,还有一个注册表设置(在这些链接中没有提及),它们链接了两个令牌。关于使用它,请参阅KB article about EnableLinkedConnectionsa discussion

+0

非常感谢您的信息。这是我怀疑的。解决方案不是很好,而是在质疑他们是否真的可以在我们的场景中使用。上一次讨论我不打算仅仅因为它的警告而让你的系统变得不安全。但很多感谢链接。 – Jonnster

+0

@Jonnster,请注意,虽然“EnableLinkedConnections”被认为是不安全的,但推理是相当薄弱的恕我直言。没有关于本地驱动器的问题,你会遇到同样的问题,没有人关心这个问题。无论如何,如果这回答你的问题,随时接受它。如果不是的话,我建议你改变问题的标签 - 这更多关于安全而不是关于WCF。 – eran

相关问题