我的程序需要访问某个UNC路径,但路径是跨域的,因此根据运行程序的计算机,它可能有也可能没有默认凭据。通常,用户只需打开资源管理器并输入UNC或IP地址即可获得登录提示(此时他们可以为共享所在的域键入适当的凭据)。
是否有一种“干净”的方式来测试UNC的可访问性,如果默认的Windows凭据是坏的,那么提示他们使用不同的那些?
现在我正在使用一些讨厌的代码来尝试读取共享上的文本文件,捕获IOException,然后打开“explorer.exe”进程对象(隐藏)以获取登录提示。这都包含在10秒后再次检查的循环中。它有点工作,但解决方案和逻辑似乎真的不合适。
我唯一的选择是WNetUseConnection还是互操作式解决方案?
答案 0 :(得分:3)
检查这些文章:
我使用过这样的代码:
new FileIOPermission(FileIOPermissionAccess.Read, path).Demand();
如果您没有所需的访问权限,则应该抛出SecurityException
,但对于网络驱动器或UNC路径上的路径,FileIOPermission.Demand()
方法似乎是无操作。< / p>
答案 1 :(得分:0)
我从未这样做过,但您可能要做的是检查NTFS中的访问控制列表(ACL)。
我对c#和“访问控制列表”进行了网络搜索,并获得了一些您可能感兴趣的点击。这可能更干净,但你已经在做的事情可能并不容易。