使用SYSTEM帐户的Windows服务调用的java更新Windows注册表

时间:2011-01-22 11:16:42

标签: java windows windows-services registry

我正在尝试将Windows注册表更新为具有SYSTEM权限的服务。 如果我使用Java更新注册表,它可以正常工作,因为Java使用管理员帐户。 当我尝试使用使用SYSTEM帐户的Windows服务调用的Java更新注册表时,它不会更新任何内容。

如何提供对SYSTEM帐户的访问权限以更新注册表。

在纯Java中工作,如果由SYSTEM帐户的服务调用,则无法正常工作。

1 个答案:

答案 0 :(得分:1)

我怀疑您需要为登录访问令牌设置一些权限。我们在Windows下运行Java服务,并且在访问注册表之前总是设置一些权限,如下所示:

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

如果我没有设置它们就行不通。您可以设置更精细的特权,但我不确定它们会是什么。

我们必须为我们编写一些本机代码,使用Win API函数,如下所示: