Можно ли запросить привилегированную службу Windows из Java-приложения в пользовательском режиме?

Фон

Я работаю над приложением, в котором мне нужно запросить все файлы, доступные на моем жестком диске, используя Java. Поскольку производительность является основным требованием, я написал собственное приложение, которое обращается к окнам Master File Table ($MBT) для всех допустимых записей файла.

Я планирую изменить native как службу Windows (работающую с правами администратора .. необходимые для доступа к MFT), а затем с помощью моего Java-приложения в пользовательском режиме связаться с ним с помощью некоторого метода IPC (в частности, совместно используемой памяти или именованного канала или сокетов … нужно оценить).

Целевое приложение конкретные окна и Java используется для обработки текста (я знаю, что Python / Perl хороши в этом, но я не использовал их в течение длительного времени).

Вопросы

Теперь мой вопрос —

  1. Можно ли запросить привилегированную службу Windows из приложения на уровне пользователя?
  2. Если нет, что может быть обходным путем для достижения этой цели?
  3. Я думаю, что сокеты могли быть возможным механизмом IPC, поскольку другие два потерпят неудачу с Access Denied, Правильно ли я полагаю, что?
  4. Является ли преобразование нативного кода в JNI / DLL, а затем использование того, что я планирую, правильным? Но в этом случае я должен запустить свое Java-приложение с правами администратора, имея собственный файл манифеста.

Платформа

  1. Windows 7 Enterprise
  2. Visual Studio 2012 (для собственного доступа $ MFT)
  3. JDK build 1.7.0_25-b17

Спасибо

0

Решение

  1. Вы можете запросить привилегированную услугу, приложение, если оно предоставляет способ
    сделать это. (то есть розетка, труба и т. д.)
  2. Для этого вы можете использовать сокет TCP / UDP Socket. Вы должны
    убедитесь, что ваш брандмауэр блокирует этот порт за пределами машины.
  3. Самый легкий & Слабосвязанным способом является Socket. Производительность зависит от объема передаваемых данных.
  4. Мониторинг файлов на жестком диске является задачей администратора. Так что запускать это Java-приложение с правами администратора неплохо. но если вы разрешаете обычным пользователям запускать это приложение, устанавливая права администратора извне, это не очень хорошая практика.
1

Другие решения

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

2

По вопросам рекламы [email protected]