可能重复:
使用Java读取/写入Windows注册表
我需要从Java访问Windows注册表.此外,我需要复制一些注册表项,可能必须使用Java输入新的注册表变量..有人帮我请...
基本上,我只需要编写一个简单的java程序来检测我本地安装的Internet Explorer的版本.
有javascript代码,但它在您的浏览器中运行.我想要的是一些这样的代码:
public class VersionTest
{
public static void main(String[] args)
{ System.out.println("you IE Version is:" + getIEVersion());
}
public static String getIEVersion()
{ //implementation that goes out and find the version of my locally installed IE
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么做?谢谢
我有一个系统,它有一些设备,通过虚拟COM端口进行通信.随着时间的推移,COM端口号会改变.我制作了一些代码来搜索这些设备的新COM端口号并记住它们.这很好用.
我的问题是定义COM端口号搜索范围.我在Microsoft KB中发现,Windows NT操作系统通常(默认情况下)限制为256个COM端口.他们还指出这是可配置的,并且没有什么能阻止系统具有非常不同的最大COM端口号.
我想知道是否有办法以编程方式知道COM端口号范围.显然,如果我让系统只搜索2⁸范围,那么比搜索2⁶⁶范围需要的时间要短得多!但是如果运行我的应用程序的系统被设置为支持超过2个COM端口号,那么在某些时候应用程序肯定会一次又一次地失败,直到COM端口号分配循环回到COM0(或者它是COM1?).如果它不需要太多巫术,我想避免这种情况.
我主要使用Java,但欢迎任何想法.
我正在尝试使用 JAVA 在 64 位 Win7 上读取/写入 Windows 注册表。
首先,我尝试了JDKjava.util.prefs.Preferences及其反射用法。这是一个很好的解决方案,但它只支持读/写 REG_SZ 类型(字符串)值。
不幸的是,我需要读/写REG_BINARY,所以放弃它。
其次,我尝试了JNI Registry。读是可以的,但是写通常会失败,因为写HKLM需要管理员权限。我不知道如何在JAVA中获得管理员权限。
最后,我尝试了 JNA(Java Native Access),这是一个使用本机库的优秀项目,并且通过Advapi32Util和来支持平台库(platform.jar)中的 Windows 注册表Advapi32。它非常好用而且简单。并且编写注册表不需要管理员权限。
但是如何在Win7上的64位JVM中读取/写入32位注册表(在WOW6432Node节点下)?
默认情况下,64 位节点在 64 位 JVM 中读/写,32 位节点在 32 位 JVM 中读/写。
但在 64 位 JVM 中,我想读/写 32 位节点(例如HKLM->SOFTWARE->Wow6432Node->ODBC)。我怎样才能做到这一点?
如果问题已经得到解答,请原谅这个问题,但我一直在网上搜索过去一小时试图解决这个问题.
我正在努力回到Java编程,我正在努力了解保存/读取我将在我的应用程序中存储的数据的最佳方法.我会将所有内容放入文本文件中并在应用程序启动时全部读取并在退出时保存所有内容吗?我认为如果应用程序太大,可能会占用太多内存?
在加载用户友好的游戏设置时,我遇到了一个问题.
我想做的是:
我试图以可区分的方式加载所有监视器的名称.
我尝试过的:
WMIC:
C:\Users\Matt>wmic
wmic:root\cli>DESKTOPMONITOR
Availability Bandwidth Caption ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName Description DeviceID DisplayType ErrorCleared ErrorDescription InstallDate IsLocked LastErrorCode MonitorManufacturer MonitorType Name PixelsPerXLogicalInch PixelsPerYLogicalInch PNPDeviceID PowerManagementCapabilities PowerManagementSupported ScreenHeight ScreenWidth Status StatusInfo SystemCreationClassName SystemName
8 Generic PnP Monitor 0 FALSE Win32_DesktopMonitor Generic PnP Monitor DesktopMonitor1 (Standard monitor types) Generic PnP Monitor Generic PnP Monitor 96 96 DISPLAY\LGD02DA\4&265EFD6&0&UID67568640 OK Win32_ComputerSystem ALIENWARE
3 Generic PnP Monitor 0 FALSE Win32_DesktopMonitor Generic PnP Monitor DesktopMonitor2 (Standard monitor types) Generic PnP Monitor Generic PnP …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行以下操作:
然而,以下几点给我带来了麻烦:
PacketCapture.lookupDevices(),它返回到接口的 Windows NPF 驱动程序设备路径列表(例如\Device\NPF_{39966C4C-3728-4368-AE92-1D36ACAF6634})和相当平淡的显示字符串(例如Microsoft),并且没有其他信息。所以我不能用它来构造UI界面列表。NetworkInterface.getNetworkInterfaces()提供系统上的接口列表,其中包含 UI 所需的所有信息,但NetworkInterface不提供 NDF 驱动程序设备路径,仅提供显示名称和设备名称,例如“net5”、“lo”等。PacketCapture#open()只接受设备路径。既已启动又未环回的设备列表NetworkInterface确实与 jpcap 返回的设备列表相对应,尽管它们的顺序不同。
因此,我找不到任何NetworkInterface可以传递给 的内容PacketCapture#open(),并且我不知道如何从 . 返回的设备路径中获取适合 UI 的信息PacketCapture#lookupDevices()。PacketCapture不接受NetworkInterface#getName()。因此,我被困住了。
我还没有在 Linux 上尝试过这个。我怀疑这个问题是 Windows 特有的,它NetworkInterface#getName()与PacketCapture#open().
我如何获取 jpcap 打开设备所需的信息NetworkInterface(或相反 - 获取NetworkInterface给定的设备路径),或者是否有另一种方法可以让我获得一个好的显示名称和 IP 地址每个设备都直接来自 jpcap?
Windows 注册表:我一直在进行一些挖掘,至少在注册表中找到了有关 NPF 设备的信息。给定 jpcap 设备路径,并使用此处的技术之一 …
我可以在Windows中转到regedit,然后转到编辑->查找并输入我想在计算机中找到的密钥(在我的例子中是Maxima)并找到所需的密钥(在我的例子中是Maxima)(在我的例子中它位于“HKEY_LOCAL_MACHINE”中\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Maxima-5.17.1_is1"),但我需要在java中动态执行此操作,并找到当前安装的maxima版本及其在Windows中的目录位置。我不知道如何继续。
我尝试使用此处所述的方法:使用 Java 读取/写入 Windows 注册表,但要使用这些方法,我需要知道密钥。如何在java中动态查找密钥?或者还有其他方法可以使用java在windows中查找软件的版本和目录位置吗?
我需要在 Java 中获取 JAVA_HOME 和 CATALINA_HOME 环境变量的值。我正在运行一个 JAR(不是 WAR)并且在System.getProperties()我只能找到"java.home".
我在这里阅读了一些关于它的其他问题,尝试了它们,但无法使它们起作用 - 我得到了不同的例外或null结果只是价值。
我记得多年前使用JNA做过类似的事情,但那是在 Windows 的 16 位时代。我能找到的最新JNA jar 是 2011 年的,在 intelliJ 工作中运行它,但是当我在 maven 中进行构建时,我会收到关于找不到某些类的错误。
我将继续调查JNA 的方向,很高兴收到任何帮助和/或想法。我认为我只是缺少正确的Maven 依赖项。
到目前为止,这是我班级的源代码:
// C:\devtools\java-external-jars\jna-4.2.2\jna-platform-4.2.2.jar
import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.util.prefs.Preferences;
public class WinRegistryHelper {
public static final String SYSTEM_ENVIRONMENT_KEY_PATH = "SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment"; …Run Code Online (Sandbox Code Playgroud) 我写了一个程序,它创建了一组输出到excel电子表格的数据.我最初使用jexcel库将数据写入文件,但我想更新程序,以便它可以检查并查看是否应该创建".xls"或".xlsx"文件,然后写入适当的文件类型.Apache POI似乎是写入".xlsx"文件的最佳选择,但是有关确定正确文件类型的任何想法?
我可以让用户在命名文件时选择,但这似乎是用户的额外工作,我假设有些用户不知道他们想要什么文件类型.
有任何想法吗?
此外,我假设操作系统是Windows,用户有一些版本的Excel,在其他情况下,我只会选择默认的文件类型.