Windows: Запуск привилегированной команды из непривилегированных с использованием CMD (или Java) - PullRequest
3 голосов
/ 06 сентября 2011

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

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

Я надеюсь, что есть что-то, что я мог бы напечатать в окне CMD, потому что это должно очень хорошо вписаться в мою программу Java.Я думаю что-то вроде run-as-admin javaw my-service.jar, где run-as-admin - это команда, которая спрашивает, продолжать или нет.

Ответы [ 4 ]

1 голос
/ 06 сентября 2011

Windows содержит инструмент «runas», который можно использовать для запуска любого исполняемого файла с другой учетной записью пользователя.

В командной строке вы должны использовать:

runas /user:Administrator "javaw -jar my-service.jar"

Единственный недостатокто, что вам нужно ввести пароль, вы не можете ввести пароль в качестве аргумента команды runas

0 голосов
/ 06 сентября 2011

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

Что вы думаете сделать, это создать вспомогательное приложение, которое включает в себя UAC манифест с requestedExecutionLevel, установленным на requireAdministrator.Это вспомогательное приложение может затем запустить службу.Проблема в том, что для этого требуется, чтобы вошедший в систему пользователь входил в группу администраторов, и это не может быть гарантией.

В целом, автоматический запуск службы предпочтительнее.

0 голосов
/ 06 сентября 2011

Вы не можете выполнить командный файл от имени администратора. Вам нужно создать ярлык для этого файла, а затем установить флаг в ярлыке «Выполнить от имени администратора», если это действительно то, что вы хотите сделать.

Чтобы сделать это на рабочем столе, выберите Ярлык, щелкните правой кнопкой мыши и выберите Свойства-> вкладка Ярлык-> Кнопка Дополнительно. Затем установите флажок «Выполнить от имени администратора».

Чтобы сделать это программно, см. Как установить флаг «Запуск от имени администратора» на ярлыке, созданном установщиком MSI

0 голосов
/ 06 сентября 2011

Мы используем библиотеку Wrapper для этого: http://sourceforge.net/projects/wrapper/

Официальный сайт , похоже, в настоящее время страдает от проблем с динамическим днс, так что вот версия архива обратного хода .

Из командной строки (и, соответственно, Java) вы можете устанавливать, удалять, запускать и останавливать приложение Java как службу.

...