无法读取受限制或受限访问计算机或防火墙安全性的Windows注册表值

时间:2016-05-20 07:06:26

标签: java

要读取注册表,我已经运行了代码。但它不适用于受限制的环境。 以下是代码。

private ArrayList<String> getVirtualPrinterlist(){
ArrayList<String> VirtualPrinterlist = new ArrayList<String>();
try{
    String [] keys = Advapi32Util.registryGetKeys (HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers" );
    for (String key : keys) {
        System.out.print(key+" #  ");
        String ipString=Advapi32Util.registryGetStringValue (HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers\\"+key, "Port");
        System.out.println(ipString) );

        VirtualPrinterlist.add(key);

    }
}catch (Exception e) {  
    e.printStackTrace();
}
return VirtualPrinterlist;
  }

1 个答案:

答案 0 :(得分:1)

如果启用了Windows防火墙,则无法从远程系统读取注册表。这甚至不适用于Windows板工具。如果您位于域环境中,则可以定义本地或全局组策略以将防火墙设置为非活动状态或关闭。

此外,Windows用户(仅在Users组中的帐户)无权写入HKLM,只能写入像HKCU这样的环境树。

如果要更改注册表设置,建议您通过调用Runtime类来使用命令行提示。您还可以在此处添加单独的adminsitrator参数。