Запуск командной строки Windows из Java в качестве администратора - Создание файла .manifest - PullRequest
2 голосов
/ 03 марта 2012

Я использую Windows 7 Pro и работаю над приложением Java в Eclipse.Мне нужно, чтобы Eclipse отправлял заданные пользователем команды (такие как 'chkdsk C:') в командную строку, а затем выводил на консоль в Eclipse все, что командная строка напечатала бы.У меня работают отправляющие команды и получаемый текст обратно.Однако, когда я запускаю chkdsk, мне нужны права администратора для сеанса командной строки.Из цепочки я вижу:

Java: запуск от имени администратора

, что один из способов сделать это - через файл .manifest.Однако у меня возникают проблемы с пониманием того, как создать файл манифеста для Java:

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

Ссылка, указанная в приведенной выше теме:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

Кажется, это специфично для Visual-Studio, будет ли пример кода работать для файла .manifest программы Java?Нужно ли создавать файл .manifest в Visual Studio или это просто текстовый файл?

Кроме того, имя файла манифеста - yourProgram.exe.manifest ... Java, как я понимаю, не 'не создает ли исполняемый файл .exe?Должен ли файл манифеста быть назван так, как указано выше, или ему нужно имя, например yourProgram.CLASS.manifest?

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 03 марта 2012

Манифест приложения, описанный здесь , и файл манифеста Java (в файле JAR в META-INF / MANIFEST.MF) - это две совершенно разные концепции, которые имеют только имя. В META-INF / MANIFEST.MF нет ничего, что помогло бы повысить уровень исполнения исполняемого файла Java.

Кроме того, JVM требует повышения прав, а не файлы классов. Размещение файла .manifest со всеми вашими файлами классов ничего не даст.

Если бы мне пришлось сделать что-то подобное, я бы предпочел использовать такую ​​программу, как elevate.exe, для вызова CHKDSK. elevate.exe можно найти по адресу в этой статье блога , связанной с вопросом, который вы упомянули. Я не тестировал elevate.exe, и автор изначально написал его для Windows Vista, поэтому я не знаю, насколько хорошо он работает в Windows 7.

Кажется, что CHKDSK - единственная часть вашего приложения, которая требует повышения прав. Если это так, то с точки зрения безопасности имеет смысл не повышать все приложение в течение всего времени, когда большую часть времени оно может обходиться без него.

...