JNA:com.sun.jna.platform.win32.Win32Exception-访问被拒绝 [英] JNA:com.sun.jna.platform.win32.Win32Exception- access denied

查看:470
本文介绍了JNA:com.sun.jna.platform.win32.Win32Exception-访问被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码从Java程序控制Windows服务

I use following code to control a windows service from java program

public class PostgresService2
{
    public static void main(String[] args)
    {
        try
            {
                W32ServiceManager serviceManager = new W32ServiceManager();
                serviceManager.open(Winsvc.SERVICE_STOP);
                W32Service service = serviceManager.openService("DBService",
                        Winsvc.SERVICE_ACCEPT_STOP);
                service.stopService();
                service.close();
             }
             catch (Exception ex)
             {
                 ex.printStackTrace();
             }
    }
}

这会在Windows7(64位)计算机上产生错误

This gives error on windows7 (64bit) machine

com.sun.jna.platform.win32.Win32Exception: Access is denied.
        at com.sun.jna.platform.win32.W32Service.queryStatus(W32Service.java
        at com.sun.jna.platform.win32.W32Service.waitForNonPendingState(W32S
        at com.sun.jna.platform.win32.W32Service.stopService(W32Service.java
        at chs.capitalmigrate.ui.PostgresService2.main(PostgresService2.java

运行命令所在的shell具有管理特权.我如何提供完全访问权限?

The shell from where the command is run has administrative privileges. How I can provide full access?

推荐答案

我正在使用SC_MANAGER_ALL_ACCESS,并且可以正常工作.不确定是否有帮助.

I am using SC_MANAGER_ALL_ACCESS and that works. Not sure if that helps.

 W32ServiceManager serviceManager = new W32ServiceManager();
               serviceManager.open(Winsvc.SC_MANAGER_ALL_ACCESS);
               W32Service service = serviceManager.openService("servicename", Winsvc.SC_MANAGER_ALL_ACCESS);

这篇关于JNA:com.sun.jna.platform.win32.Win32Exception-访问被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆