
Попробую прояснить. У меня есть exe, назовем его foo.exe на ПК с Windows 10.
Если я дважды щелкну по этому файлу — будь то через ярлык на рабочем столе или двойным щелчком из проводника — он выдаст ошибку (на данном этапе подробности ошибки не имеют значения, но я полагаю, что он пытается вызвать какую-то dll и терпит неудачу).
Однако если я создам файл .cmd с надписью «Start foo.exe», то он запустится нормально — без ошибок и программа будет полностью функциональна.
Мне интересно, в чем функциональные различия между режимами запуска, и я склоняюсь к тому, что, возможно, дело в токене безопасности, под управлением которого он работает.
Итак, в принципе, если я просто делаю простой двойной щелчок, я получаю огонь и серу.
Однако, если я: A. Запускаю его из файла .cmd или B. Запускаю от имени администратора или C. Запускаю средство устранения неполадок совместимости (щелчок правой кнопкой мыши). Эти ошибки не возникают. Похоже, это не проблема совместимости, потому что: a. Он нормально запускается через файл .cmd или запуск от имени администратора b. Если я сохраняю выбранный режим совместимости, он все равно выдает ошибку при следующем двойном щелчке.
Меня это убивает — это .exe-файл поставщика, поэтому у меня нет исходного кода, и я не могу предоставить никаких подробностей о том, какие библиотеки DLL он вызывает и т. д. Я просто ищу второго высокоуровневого взгляда на то, почему запуск с помощью другого метода запуска заставляет простой exe-файл работать нормально.
У этого же .exe НЕ было этой проблемы в Windows 7 — такое поведение появилось в Windows 10. Я слышал, что в WIn 10 есть что-то, что по умолчанию запускает все под наименее привилегированным маркером, который может — независимо от того, является ли пользователь суперадминистратором или гостем, и это то, к чему я склоняюсь, но я не уверен и не знаю, как это исправить. Спасибо!