要读取注册表,我已经运行了代码。但它不适用于受限制的环境。 以下是代码。
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;
}
答案 0 :(得分:1)
如果启用了Windows防火墙,则无法从远程系统读取注册表。这甚至不适用于Windows板工具。如果您位于域环境中,则可以定义本地或全局组策略以将防火墙设置为非活动状态或关闭。
此外,Windows用户(仅在Users
组中的帐户)无权写入HKLM,只能写入像HKCU这样的环境树。
如果要更改注册表设置,建议您通过调用Runtime
类来使用命令行提示。您还可以在此处添加单独的adminsitrator参数。