我的程序需要访问特定的UNC路径,但路径是跨域的,因此根据运行程序的计算机的不同,它可能有也可能没有默认凭据。通常,用户必须打开资源管理器并键入UNC或IP地址才能获得登录提示(此时他们可以为共享所在的域键入适当的凭据)。测试UNC路径的“可访问性”
是否有“干净”的方式来测试UNC的可访问性,如果默认的Windows凭据不好,然后提示他们不同的?
现在我正在使用一些讨厌的代码尝试读取共享上的文本文件,捕获一个IOException,然后打开一个“explorer.exe”过程对象(隐藏)以获取登录提示。这全部包含在循环中,10秒后再次检查。它有点类似的作品,但解决方案和逻辑看起来非常不可取。
我的唯一选择是真正的WNetUseConnection还是互操作式解决方案?
事实并非总是如此,先发制人的测试是毫无意义的。例如,有时提前测试可能会取得成功。也就是说,问问“嘿,你是否极有可能抛出异常?”可能会更便宜。而不是尝试它并等待异常。这在长时间的多步骤流程中尤其如此,因为整个过程可能会在最后一步失败。如果最后一步几乎肯定会失败,那么提前查找可以为您节省到达目标的工作量。但是,那是说,不管怎样,你都必须处理失败案例。 – 2011-04-21 14:51:27
是的......“毫无意义”可能不是短语的最佳转向。如果您已经知道该文件不存在/无法预先访问,您可能只想保释一下,而不是做很多工作,这几乎肯定是徒劳的。 – 2011-04-21 16:59:48
我想我唯一担心的是在将文件写入共享之前,我的程序(SQL查询,用户交互等)中存在很多开销,并且当我的程序写入共享时,这是一个相当密集的过程即大的zip文件)。如果用户不能正确访问UNC,这可能会导致用户部分的5-10分钟“浪费”时间。当然,我在IOExceptions的try/catch中包装了一些东西,我只是祈祷用户知道他们的意思(heh)。感谢您的有益回应。 – Jai 2011-04-22 13:35:22