2015-12-23 2 views
-1

Я создаю программу, которая должна работать с системными программами Windows, такими как C:\windows\System32\bcdedit.exe. Если я попытаюсь достичь, например, mspaint, он работает хорошо.C# не видит программу windows

IO.File.Exists(@"C:\windows\System32\mspaint.exe") // return true 

но

IO.File.Exists(@"C:\windows\System32\bcdedit.exe") // return false 

Это возвращает ложь, но файл действительно существует. Я вижу это в проводнике Windows, и я могу запустить его из командной строки. Только для моего приложения C# этот файл недоступен. Когда я хочу, чтобы запустить его я получаю Win32Exception ошибки с сообщением:

Система не может найти указанный файл

И когда я «спросить», если файл существует (по коде выше) его возвращает false.

Почему?

+2

Что делать, если вы это сделаете 'IO.File.Exists (@" C: \ windows \ System32 \ bcdedit.exe ");' – MethodMan

+0

ooh, когда я переписывал свой код, я забыл @. Но с @ - результат тот же. – Misaz

+0

Я запускаю код, используя следующее, и он работает на моей машине 'if (File.Exists (@" C: \ windows \ System32 \ bcdedit.exe "))' также вам нужен оператор If, который я угадываю. . – MethodMan

ответ

0

Попробуйте следующее, это должно возвращать true.

IO.File.Exists(@"C:\windows\System32\bcdedit.exe"); 

Вот пример для проверки:

string curFile = @"C:\windows\System32\bcdedit.exe"; 
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist."); 

Ссылка: https://msdn.microsoft.com/en-us/library/system.io.file.exists(v=vs.110).aspx

Если это не сработает, то, скорее всего, проблема x64 или x86. Поэтому вы должны настроить свою сборку на AnyCPU и протестировать ее снова.

enter image description here

Более подробную информацию можно найти here.

+0

возвращает false. – Misaz

+0

Пожалуйста, проверьте мой пример кода, который я изменил на основе вашего тестового примера. – casillas

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