gpt4 book ai didi

c# - 测试 UNC 路径的 "Accessability"

转载 作者:太空狗 更新时间:2023-10-29 23:34:21 26 4
gpt4 key购买 nike

我的程序需要访问某个 UNC 路径,但该路径是跨域的,因此根据运行程序的机器,它可能有也可能没有默认凭据。通常,用户只需打开资源管理器并输入 UNC 或 IP 地址即可获得登录提示(此时他们可以输入共享所在域的适当凭据)。

是否有一种“干净”的方法来测试 UNC 可访问性,如果默认的 Windows 凭据错误,则提示他们使用不同的凭据?

现在我正在使用一些讨厌的代码来尝试读取共享上的文本文件,捕获 IOException,然后打开“explorer.exe”进程对象(隐藏)以获取登录提示。这一切都包含在一个循环中,该循环在 10 秒后再次检查。它有点工作,但解决方案和逻辑似乎真的不受欢迎。

真的是我唯一的选择吗WNetUseConnection还是互操作式解决方案?

最佳答案

检查这些文章:

  • Testing File Access Rights in .NET 2.0 .用于测试文件系统权限的便捷类。
  • Vexing exceptions . Eric Lippert 关于为什么先发制人的测试毫无意义(简而言之:存在隐含的竞争条件。在测试和实际访问之间,其他一些进程可能会更改权限,移动或删除文件,或者网络可能会掉线......等等。这意味着您必须处理在尝试访问资源时抛出的异常,因此您可以很好地构建代码以在问题实际发生时对其进行处理。

我使用过这样的代码:

new FileIOPermission(FileIOPermissionAccess.Read, path).Demand();

如果您没有所需的访问权限,应该会抛出 SecurityException,但对于网络驱动器上的路径或 UNC 路径,FileIOPermission.Demand()方法似乎是空操作。

关于c# - 测试 UNC 路径的 "Accessability",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com