Я создал службу Windows, которая принимает команды от удаленных машин через WCF. Одна из тех команд должна выполнить указанный исполняемый файл (давайте проигнорируем последствия безопасности такой функциональности).
В моем Сервисе я использую Процесс. Начните () выполнять исполняемый файл. Все работы хорошо, если исполняемый файл локален для машины, но если это находится на удаленной доле файла, это перестало работать без ошибки (или более точно просто зависает). Я подозреваю, что проблема состоит в том, что это инициировало стандартный Windows 'Непроверенный Издатель' предупреждение, что можно было бы видеть, дважды щелкают ли они по exe по удаленной системе.
Есть ли какой-либо способ, которым я могу обойти это от своего сервиса так, чтобы я мог действительно выполнить какой-либо исполняемый файл? Как я сказал, я понимаю последствия безопасности разрешения этого выполнить любой исполняемый файл, но это действительно, в чем я нуждаюсь. Я думал бы, что это предупреждение было только понятием непривилегированного режима, но это действительно, кажется, мешает моему Сервису.
Идеи?
У меня была такая же проблема. И вы правы насчет предупреждения «Непроверенный издатель».
Я решил скопировать EXE локально в папку% TEMP% и запустить его оттуда. В моем случае это было оптимально, потому что у EXE не было зависимостей.
Возможно, вам следует проверить Политику безопасности времени выполнения .net framework и настроить параметры безопасности зоны.
Возможно, вы захотите проверить разрешения учетной записи, под которой запущена служба. Возможно, вам потребуется использовать учетную запись с большими привилегиями для запуска файлов, расположенных не на коробке. Один из простых способов проверить это - запустить службу под учетной записью администратора. Если он работает, значит, вы знаете, где проблема.