在winforms应用程序中,我正在尝试打开存储在UNC访问的共享驱动器上的文档。它在我的网络上工作正常,但在我的客户端网络上失败了。如果我检查以确保该文件存在,它会说它确实存在,但当我尝试打开它时,我收到一条错误消息说
System.ComponentModel.Win32Exception: 系统找不到该文件 指定于 System.Diagnostics.Process.StartWithShellExecuteEx(的ProcessStartInfo 的StartInfo)
这是代码......
// path = "\\server\folder with spaces\"
// fileName = "test.txt"
if (!System.IO.File.Exists(path + fileName)) {
MessageBox.Show("The file " + fileName + " cannot be found.", "Remove File", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = path + fileName;
myProcess.Start(); // FAILS HERE WITH 'SYSTEM CANNOT FIND THE FILE SPECIFIED' ERROR ON CUSTOMER'S NETWORK, WORKS FINE ON MY NETWORK
}
我已经尝试了我能想到的StartInfo选项的每个组合,并且无法找出它为什么找到System.IO.File.Exists()
的文件,但却无法在process.Start();
上找到它
有什么建议吗?
答案 0 :(得分:0)
因此,尝试使用UNC路径访问该文件失败。 将其切换为使用映射路径。我有点讨厌这样做,但映射是企业环境的一部分,所以我认为它不会很快改变。
答案 1 :(得分:0)
我不确定这是否属于您所看到的内容,但请检查this是否信任某个共享。相关信息:
由于网络共享默认只获得LocalIntranet权限, 想要使用CasPol完全信任某些人是相对常见的 您控制和知道的股票是安全的。但是,CasPol语法 就是这样,执行此操作的命令并不是很明显。 如果我想信任共享的一切\ ShawnFa-Srv \ Tools,那么 命令:
CasPol.exe -m -ag 1.2 -url file:// \ ShawnFa-Srv / Tools / * FullTrust
设置策略以执行我需要的操作。让我们打破这个 命令:
-m - 修改策略的计算机级别。这是必需的,因为机器级别是所有默认策略的存在。在新台币 平台它也是CasPol使用的默认级别 在Win9x上,CasPol将默认为用户级别,因此将-m放入 命令行显式告诉CasPol使用正确的级别。
-ag 1.2 - 在1.2组下添加代码组。在默认策略中,组1.2是LocalIntranet组,因此我们是新的代码组 只有在文件来自内联网时才会检查创建。
-url file:// \ ShawnFa-Srv / Tools / * - 新代码组的成员资格条件应为UrlMembershipCondition,并且应该匹配 任何URL以file:// ShawnFa-Srv / Tools开头的含义 \ ShawnFa-Srv \ Tools共享上的任何文件都将匹配此代码 基。
FullTrust - 授予与之匹配的程序集的权限集 代码组。在这种情况下,FullTrust。
请注意.NET 3.5 SP1 fixed这个。这只适用于从共享运行的.NET可执行文件,但如果这有助于您的情况,可能不会受到影响。 Vance Morrison州:
所以我鼓励你下载.NET 3.5 SP1 service pack。它 是运行时风险非常低的插件更新。一旦你这样做, 你可以免费获得网络发布。因为它是一个服务包,你 也可以简单地等待,并自动获取更新 接下来几周通过Windows更新。因此,如果你是软件 现在很快,您的客户很有可能 有这个更新的运行时。