@ebaysher

Как изменить разрядность приложения .net?

static void Main(string[] args)
        {
            StartProcess();
        }
static void StartProcess()
        {
          Process.Start("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "https://www.google.com");
        }


Когда указываю абсолютный, путь все ок. Если запускать с другого пк то путь может быть другой. Когда указываю относительный путь выходит исключение. На одном форуме подсказали что дело в разрядности приложения.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Разрядность тут точно не при делах.
Как уже отметили - Start требует указания явного пути к запускаемому (иначе ведь вполне могут подсунуть совсем иное).
Для "обхода" ограничения в виде обязательного указания явного пути можно задействовать несколько вариантов:
- запускать cmd.exe указав в параметрах запускаемое приложение - поможет только если приложение лежит где угодно, но прописано в path
- перелопатить файловую систему и найти конкретный путь к приложению (Directory.GetFiles) - приложений может оказаться несколько и придется делать выбор
- проверить наличие в ожидаемых местах и при отсутствии спросить у пользователя, а потом сохранить это для последующих запусков

p/s/ можно еще порыть в registry на предмет проверки наличия установленных программ и добыть путь оттуда
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka Куратор тега .NET
Токсичный шарпист
На одном форуме подсказали что дело в разрядности приложения.

Интересно, причём тут разрядность вообще.
Когда указываю относительный путь выходит исключение.

Относительный путь решит проблему, только если хром будет установлен в ту же папку, что и твоё приложение. Сейчас же он часто ставится в локальную папку пользователя.

Вариантов несколько:
1. Проси у пользователя явно указать путь к хрому
2. Запускай дефолтный браузер. Для этого надо ввести просто Process.Start("https://www.google.com");
Но это вроде будет работать только на винде
3. Тащи бинарники хрома вместо со своим приложением.
4. Перебирай все возможные пути к хрому: и Program Files, и Program Files (x86), и AppData
Ответ написан
Комментировать
@none7
Свойства проекта
Target = "Any CPU"
Prefer 32-bit = false
vs2015_proppage_build.png?view=vs-2019

А вообще хорошим тоном является запуск браузера по умолчанию указывая вместо пути к программе сам URL и установив свойство UseShellExecute=true. Если хочется предоставить выбор браузера, то нужно залезть в HKEY_CLASSES_ROOT и вытащить из него список обработчиков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы