Обновление реестра Windows с использованием Java, вызванного службой Windows учетной записи SYSTEM - PullRequest
1 голос
/ 22 января 2011

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

Как предоставить доступ к учетной записи SYSTEM для обновления реестра.

Работает на чистой Java, не работает, если он вызывается службой учетной записи SYSTEM.

1 Ответ

1 голос
/ 16 февраля 2011

Я подозреваю, что вам нужно установить некоторые привилегии для вашего токена доступа.Мы запускаем Java-сервис под Windows, и я всегда устанавливаю некоторые привилегии, прежде чем получить доступ к реестру, например:

public static final String BACKUP_PRIV = "SeBackupPrivilege";    
public static final String RESTORE_PRIV = "SeRestorePrivilege";  
public static final String SECURITY_PRIV = "SeSecurityPrivilege";

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

Нам пришлось написать некоторый нативный код, чтобы сделать это для нас, используя функции Win API, такие как следующие:

...