2013-08-13 2 views
2

Я пытаюсь запустить диспетчер MS NLB (nlbmgr.exe) в своем коде, но программа говорит, что он не существует, хотя он есть. Я проверял права доступа к файлам, и у меня есть доступ, но он по-прежнему не работает.Код C# не может видеть файл, хотя он существует

Вот код, я использую:

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, но этого не существует в моей системе.

Спасибо за помощь.

ответ

5

Взгляните на это о file system redirector

Кажется, как будто ваш путь перенаправлены на C: \ Windows \ SysWOW64 \ nlbmgr.exe Синативная вещь останавливает это. В вашей системе это фактически не будет виртуальным. Попробуйте изменить свой путь на @"C:\Windows\Sysnative\nlbmgr.exe", что приведет к тому, что вызов действительно будет направлен на "C:\Windows\System32\nlbmgr.exe", который является правильным путем.

+0

Спасибо за отзыв. Я пробовал, и это сработало. Я видел синус, упомянутый в другом посте, но думал, что они относятся к фактическому каталогу, которого я не видел в проводнике Windows. Я не понимал, что это был «виртуальный каталог» переведенного кода. Спасибо за помощь, работая сейчас. – user2680530

+0

Рад помочь, и добро пожаловать в переполнение стека. Если этот ответ решит вашу проблему, отметьте его как принятый, нажав зеленую галочку. –

Смежные вопросы