即使文件存在,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#代码也看不到它

看看关于文件系统重定向程序的内容

似乎您的路径被重定向到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