【发布时间】:2014-07-15 06:04:18
【问题描述】:
我有一个应用程序需要对用户无权(也不应该)访问的网络文件夹进行读/写访问。我可以使用几种不同的方法访问该文件夹,包括 通过 System.Net 的 NetworkCredential 和 WNetAddConnection2 通过 DllImport("mpr.dll")
无论我使用什么方法,当应用程序访问文件夹时,用户都可以通过 Window->Explorer 浏览到该文件夹,即使用户没有(更重要的是,不应该)有凭据访问该网络文件夹。
有没有一种方法可以允许网络访问我的应用程序的文件夹,而不允许当前用户通过 Windows->Explorer 访问同一文件夹?
应用程序关闭后,用户将无法再访问网络文件夹(尽管这需要一分钟左右)。
谢谢,
【问题讨论】:
-
没有。访问就是访问。您可能能够做到这一点的唯一方法是让您的应用程序通过不同的用户帐户访问该文件夹。
-
@RobertHarvey 我认为 OP 已经在做类似的事情,因为程序终止后访问被拒绝。
-
如果用户运行应用程序,他可以用它做任何他喜欢的事情。因此,应用程序正在使用的凭据,用户可以从正在运行的应用程序中检索/拦截它们。应用程序是否需要直接访问共享。因为如果没有。也许更好的解决方案是让应用程序使用服务并让服务与用户共享。
-
但是如果应用程序冒充另一个用户,为什么登录的用户可以通过 Windows 资源管理器访问该文件夹? OP 并没有说用户通过使用应用程序获得访问权限,而是在 Windows 级别。
-
我同意@RolfHuisman。我已经使用特权用户的信用运行服务来完成这种事情。用户运行需要凭据的程序的问题是您必须嵌入凭据。
标签: c# networking