2015-02-24 3 views
0

Process.Start() работает только на ярлыке, цель которого находится в папке Program Files (x86), а не в папке Program Files.Почему Process.Start() открывает только ярлыки, если цель находится в «Program Files (x86)».

Если цель находится в папке Program Files я получаю ошибку парование

«Система не может найти указанный файл» (Ошибка выполнения)

Почему это происходит, и есть ли способ исправить это, чтобы я мог открыть ярлыки, чьи цели находятся в папке Program Files.

Если это важно - у меня Windows 7 Ultimate

Редактировать

Вот мой код

public class MainClass 
{ 
    static void Main() 
    { 
    Process.Start(Path.Combine(Directory.GetCurrentDirectory(), "Blender")); 
    Console.ReadLine(); 
} 
} 

Edit 2 - Мое решение

Я пришел подозревать, что проблема связана с моей IDE (Xamarin Studio). Поэтому я установил Visual Studio, отключил опцию 32 бит и установил его в AnyCPU, и он сработал. Я не знаю, почему Xamarin Studio делала это, но я знаю, что визуальная студия заставила его уйти.

ответ

2

Это 32-разрядная проблема или проблема с расположением файлов.

Что вы пробовали?

Какой код вы используете?

Я создал очень базовое приложение, и он работает отлично, хотя, если я использую неправильный путь, вы выбросите свою ошибку. Также будет использоваться «предпочтительный 32-разрядный».

Поскольку существует 2 наиболее вероятные причины вам нужно сделать это:

  1. Проверьте свойства проекта.

В разделе «Сборка» есть «Платформа-мишень». Убедитесь, что он установлен в любой процессор и снимите флажок «Предпочитайте 32-разрядный».

Это, скорее всего, будет вашей проблемой.

  1. Если все еще не удается, у вас неправильный путь.

Хотя вы можете сказать: «Я, безусловно, не знаю! Это на моем рабочем столе! Я вижу это!» Вы ошибаетесь.

Ярлык можно разместить на рабочем столе каждого пользователя, разместив его в общедоступном месте. Например, у меня есть ярлык на моем dessktop, но он не найден под моим рабочим столом. Он появляется на моем рабочем столе, потому что он находится в общей папке.

Щелкните правой кнопкой мыши ярлык и используйте путь, указанный рядом с «Местоположение». Это его истинное местоположение.

Пример:

Process.Start(new ProcessStartInfo() 
      { 
       FileName = @"C:\Users\Public\Desktop\Oracle VM VirtualBox" 
      }); 

Или просто:

Process.Start(@"C:\Users\Public\Desktop\Oracle VM VirtualBox"); 
+0

Там нет никакого способа, что путь может быть неправильным, потому что ярлык я хочу открыть расположен в 'текущего directory'. Я попытался изменить платформу Target на любой процессор, но это не сработало. Единственное, что до сих пор работало, это использование полного пути, такого как 'C: \ Program Files \ Blender Foundation \ Blender', но это не будет – JackBarn

+0

Ваш код работает. Как вы видите, что это не так? Вы используете его через VS? Если да, есть ли ярлык в папке отладки или выпуска? Если вы берете скомпилированный exe и размещаете его рядом с ярлыком, тогда запустите его, что произойдет? Я думаю, что вы запускаете его через VS, и в этом случае путь неправильный, если у вас нет ярлыка в вашей папке отладки/выпуска (так как это то, что «текущий каталог»). Ваш код работает как есть в моей системе без ошибок, поэтому убедитесь, что путь, который вы передаете, - это путь, который вы хотите. –

+0

Ярлык находится в папке Debug рядом со скомпилированным exe. Я установил его в любой процессор. Это все еще дает мне эту ошибку. Я использую студию Xarmine, которая является такой же, как Visusl Studio. – JackBarn

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

  • Нет связанных вопросов^_^