2

Я пытаюсь запустить приложение на компьютере под управлением Windows Server 2008 R2 с компьютера под управлением Windows Server 2003 R2, используя командный файл со следующей строкой кода в командном файле:

psexec \\nightmachine -u DOMAIN\User -p Password -i "C:\FilePath\Application.exe" argument1 argument2

Приложение не запускается правильно при запуске с использованием psexec, но приложение будет работать правильно, если я вошел в ночную машину с тем же пользователем и запустил ее по пути к файлу через cmd. Мне удалось получить ошибку, возвращенную в приложении из его журнала, и возвращаемое исключение следующее:

Система.DllNotFoundException: Невозможно загрузить DLL 'rasapi32.dll': сбой процедуры инициализации библиотеки динамических ссылок (DLL). (Исключение из HRESULT: 0x8007045A)

После поиска этого кода ошибки в сети появилось много сообщений о том, что это вызвано повреждением файла, но я не понимаю, почему это так, поскольку приложение будет работать нормально, если его не запускать из psexec. (пользователь является администратором на обеих машинах)

Может кто-нибудь, пожалуйста, помогите мне в этом? Если для решения этой проблемы потребуется дополнительная информация, пожалуйста, спросите, и я сделаю все возможное, чтобы опубликовать ее.

2 ответа2

0

Проблема решена! Я обнаружил, что приложение, запущенное на удаленном компьютере с помощью psexec, теряло свои пользовательские данные, когда приложение вызывало процессы вне себя, что означало, что любые необходимые разрешения были потеряны.

Чтобы обойти эту проблему, я настроил запланированную задачу на удаленном компьютере, где приложение живет, чтобы запустить приложение, используя необходимые учетные данные пользователя. Задача была настроена на однократное выполнение, но также настроена так, что ее можно запускать вручную. Это означало, что при запуске приложения задачей не было потеряно никаких разрешений. Я начал задачу с помощью Psexec:

psexec \\remotemachine schtasks /run /tn "Task name"

0

Я предполагаю, что ваш UNC в вопросе имеет только одну косую черту из-за необходимости напечатать его здесь для форматирования "\\\", но если нет, то исправьте это. Я думаю, что проблема в том, что psexec смотрит на ваши аргументы вне кавычек и не знает, что с ними делать. Самым простым способом может быть помещение команды, которую вы можете запустить на сервере, в пакетный файл и psexec этого пакетного файла, или вы можете попробовать переместить вторую кавычку после аргументов. Конечно, тогда у вас не должно быть пробелов на пути.

psexec \\nightmachine -u DOMAIN\User -p Password -i "C:\FilePath\Application.exe" argument1 argument2"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .