即使文件存在,C#代码也看不到它
本文关键字:代码 看不到 文件 存在 | 更新日期: 2023-09-27 18:27:30
我试图在代码中启动MS NLB管理器(nlbmgr.exe),但程序说它不存在,即使它在那里。我已经检查了文件权限,并且我有访问权限,但它仍然不起作用。
这是我正在使用的代码:
if (File.Exists(@"C:'Windows'system32'nlbmgr.exe"))
{
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = @"C:'Windows'system32'nlbmgr.exe";
info.UseShellExecute = true;
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Maximized;
info.RedirectStandardInput = false;
info.RedirectStandardOutput = false;
info.RedirectStandardError = false;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);
}
如果我将路径复制粘贴到命令提示符或开始->运行中,效果很好。
我看到其他帖子提到了sysnative文件夹,但在我的系统中并不存在。
谢谢你的帮助。
看看关于文件系统重定向程序的内容
似乎您的路径被重定向到C:''Windows''SysWOW64''nlbmgr.exe系统本机的事情阻止了这种情况的发生。这实际上并不存在于您的系统中,它只是虚拟的。尝试将路径更改为@"C:'Windows'Sysnative'nlbmgr.exe"
,这将导致调用实际指向"C:'Windows'System32'nlbmgr.exe"
,这是您想要的正确路径。
只是猜测一下,但这是一个32位应用程序试图访问此文件夹吗?我认为可能发生的是如何将FS重定向到C:'Windows'SysWOW64
。在C#的wiki部分有一些例子:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx