2013-05-10 2 views
1

Короче говоря, я написал программу, которая позволяет удаленно устанавливать программное обеспечение и запускать команды на машинах Windows. Я использовал команду START (которую я узнал из другой записи в stackoverflow, найденной here), чтобы выполнить пакетный файл через RPC, чтобы мой сервер не дождался завершения установки. Он отлично работает на большинстве из 1000 компьютеров в школьном округе, на котором я написал это, но у меня есть несколько компьютеров, в которых START не запускает командный файл. Я не получаю никаких сообщений об ошибках, и весь поиск, который я сделал, содержит больше примеров того, как использовать команду START. Я не смог найти никаких ссылок на него, просто не работает.Команда Windows START не запускается при запуске из RPC

Мой сервер является linux и использует winexe для RPC. Вот команда, которую я запускаю.

winexe -W domain -U adminUser --password=adminPassword //compName.domain.internal --runas=domain\\adminUser%adminPassword "\\\\Server\\PathToBatch\\run.cmd \\\\Server\\PathToBatch\\install.cmd" 

Код run.cmd приведен ниже.

START %1 
exit 

Пакетный файл install.cmd создается моей программой в зависимости от того, что они хотят установить. Дополнительные \ s в команде являются escape-символами, потому что \ является escape-символом в linux.

Выход я получаю.

C:\WINDOWS\system32>start \\Server\PathToBatch\install.cmd 
C:\WINDOWS\system32>exit 

Нет сообщений об ошибках, и выход на компьютере, который запускается правильно, не меняется.

Я попытался запустить команду из командной строки на машине точно так же, как она выполняется через RPC, и она отлично работает. Я могу запустить install.cmd самостоятельно, используя RPC, и он отлично работает, за исключением того, что мне нужно дождаться завершения установки. Точно такие же командные файлы могут быть запущены на других компьютерах без проблем.

Просмотр диспетчера задач на компьютере, который работает. Я вижу процесс cmd, запускаемый началом adminUser, а затем запускает второй процесс cmd и первый уходит. На нерабочем компьютере он запускает первый процесс cmd и уходит без участия второго процесса cmd.

Я не смог найти различий между рабочим компьютером и нерабочим компьютером. На компьютерах нет брандмауэра.

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

Заранее благодарим за любую помощь, которую вы можете мне дать.

ответ

0

Попробуйте start "" %1 вместо start %1. Также дважды проверьте, может ли пользователь runas фактически получить доступ к \\Server\PathToBatch на машинах, где команда не работает.

+0

Я пробовал его с начала «% 1» и действует точно так же. \\ Server \ PathToBatch - это общий доступ только для чтения, который не требует входа пользователя в систему. Я тестировал работу без команды запуска, и это работает. Что добавляет «?»? – user2052115

+0

Он устанавливает заголовок окна. –

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