相关疑难解决方法(0)

如何使用Java执行Windows命令 - 更改网络设置

在Java中,我希望能够执行Windows命令.

有问题的命令是netsh.这将使我能够设置/重置我的IP地址.

请注意,我不想执行批处理文件.

我想直接执行这些命令,而不是使用批处理文件.这可能吗?


这是我实现的未来参考解决方案:

public class JavaRunCommand {
    private static final String CMD = 
        "netsh int ip set address name = \"Local Area Connection\" source = static addr = 192.168.222.3 mask = 255.255.255.0";
    public static void main(String args[]) {

        try {
            // Run "netsh" Windows command
            Process process = Runtime.getRuntime().exec(CMD);

            // Get input streams
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            // Read command standard output
            String s;
            System.out.println("Standard output: ");
            while …
Run Code Online (Sandbox Code Playgroud)

java windows runtime.exec

42
推荐指数
3
解决办法
9万
查看次数

在Windows启动时运行Java应用程序

我有一个包含Java应用程序的JAR文件.如何在不需要用户交互的情况下从Windows开始?

java windows startup

38
推荐指数
5
解决办法
8万
查看次数

有没有办法在Windows下使用java.util.Preferences而不使用Registry作为后端?

我想使用java.util.Preferences API,但我不希望我的程序尝试读取或写入Windows注册表.我该怎么做?

java windows registry preferences

17
推荐指数
1
解决办法
1万
查看次数

在Windows/Mac OS X/Linux上为许可证信息/试验创建/保留机密文件的位置?

我正在编写一个商业产品,它使用简单的注册机制,允许用户在购买前使用该应用程序进行演示.

我的应用程序必须在某处存储注册信息(如果输入)和/或第一次启动的日期,以计算用户是否仍在演示/试用期内.虽然我已经完成了注册机制本身,但我现在必须找到一种将注册信息存储在用户磁盘上的好方法.

最明显的想法是将试用期存储在首选项文件中,但由于用户倾向于不时删除/修改试用期,因此将注册信息保存在单独的,更隐藏的文件中可能是个好主意.

所以这是我的问题:在Windows,Mac OS X和Linux上保留和创建隐藏文件的最佳位置/策略是什么?到目前为止,我想到的是:

Linux/Mac OS X.

当涉及到用户可以写文件的地方时,大多数类Unix系统都被锁定了.在大多数情况下,这只是/tmp目录和用户的主目录.我想这里最简单的可能就是创建一个带有点前缀的文件,使其不太明显,然后给它一个名称,使其与我的应用程序无关.

视窗

可能与Linux/Mac OS X非常相似 - 在文件系统权限方面,更新的Windows版本变得更加严格.


无论如何,我想听听你的想法和想法.如果你已经实现过类似的东西,那就更好了.

谢谢!


更新

对我来说,如果复制保护的这种方式好或坏,这些文件的位置比问题的讨论更相关.

hidden licensing invisible file

13
推荐指数
1
解决办法
1万
查看次数

如何在Java中设置尊重用户操作系统设置的日期和时间格式

我在Windows 7机器上运行我的Java应用程序,我的区域设置设置为将日期格式设置为YYYY-mm-dd,时间格式为HH:mm:ss(例如"2011-06-20 07:50:28") .但是当我DateFormat.getDateTimeInstance().format用来格式化我的约会时,我没有看到相反,我得到的是"20-Jun-2011 7:50:28 AM".我需要做什么来设置日期,以便客户将其操作系统设置为显示日期?

这是我的代码看起来像:

File selGameLastTurnFile = selectedGame.getLastTurn ().getTurnFile ();
Date selGameModifiedDate = new Date (selGameLastTurnFile.lastModified());
if (selectedGame.isYourTurn ())  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.PlayTurn",  //$NON-NLS-1$
            FileHelper.getFileName (selGameLastTurnFile), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}  else  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.SentTurn",  //$NON-NLS-1$
            selGameLastTurnFile.getName (), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}
Run Code Online (Sandbox Code Playgroud)

Messages.getFormattedString呼叫使用MessageFormat把日期成句,这将是这样的:

转牌'QB Nat vs Ian 008'(收到20-Jun-2011 7:50:28 AM)

但是我的操作系统设置被设置为格式化日期,如上所述,我希望看到这个:

转牌'QB Nat vs Ian 008'(收到2011-06-20 07:50:28)

我在这里和其他Java编程站点搜索并找不到答案,但这似乎是一件显而易见的事情,我觉得我错过了一些明显的东西.

java windows formatting date

13
推荐指数
3
解决办法
8472
查看次数

在Java中,为什么WindowsPreferences会使用斜杠作为大写字母?

我一直在使用java.util.prefs.Preferences功能(在Java 8中,在Windows机器上).它可以工作,我可以在其中写入Windows注册表的新密钥.因此,我使用Preferences.systemRoot()来获取系统的Preferences对象,然后使用node()方法获取映射到Windows注册表中的节点的Preferences对象.它创造了很好的东西.

我用于节点的密钥是所有大写字母的字符串("RBI").当我查看Windows注册表中的节点时,它显示为"/ R/B/I",名称中带有正斜杠.

我觉得这很奇怪,所以我挖了一下而且看起来这是故意的.我找到了在Windows环境中提供Preferences实现的类(java.util.prefs.WindowsPreferences),该方法用于构建发送到Windows注册表的值是一个静态方法toWindowsName.在JavaDoc中......

/**
 * Converts value's or node's name to its Windows representation
 * as a byte-encoded string.
 * Two encodings, simple and altBase64 are used.
 * <p>
 * <i>Simple</i> encoding is used, if java string does not contain
 * any characters less, than 0x0020, or greater, than 0x007f.
 * Simple encoding adds "/" character to capital letters, i.e.
 * "A" is encoded as "/A". Character '\' is encoded as '//',
 * '/' is encoded as '\'. …
Run Code Online (Sandbox Code Playgroud)

java windows registry

13
推荐指数
1
解决办法
1297
查看次数

获取与COM端口相关的设备/驱动程序信息?

我有一个串行到USB设备,在Windows设备管理器中具有类似命名的设备驱动程序.设备并不总是在系统启动时获取相同的COM端口,因此我的程序需要在启动时识别它.

我已经尝试使用RXTX来枚举系统上的COM端口,但这不起作用因为CommPortIdentifier.getName()只返回COM名称(例如COM1,COM2等)我需要获取驱动程序制造商名称或驱动程序显示在设备管理器中的名称,并将其与COM名称关联.

这可以用Java轻松完成吗?(我对任何支持它的第三方Java库感兴趣.)否则,我如何通过win32 API开始实现这一目标?

java windows serial-port device-driver

10
推荐指数
1
解决办法
1万
查看次数

用Java捕获扬声器输出

使用Java是否可以捕获扬声器输出?此输出不是由我的程序生成的,而是由其他正在运行的应用程序生成的.这可以用Java完成还是我需要求助于C/C++?

java audio javasound capture

9
推荐指数
1
解决办法
7337
查看次数

如何从Java中的OS读取"列表分隔符"?

我正在编写一个Java导出器,它应该尊重用户的自定义设置,尤其是用作分隔符的"列表分隔符".

在Windows中,可以设置此List分隔符

Control Panel -> Regional and Language Options -> Regional Options -> Customize
Run Code Online (Sandbox Code Playgroud)

我不知道其他操作系统,但我很确定你也可以在其他操作系统上改变它.

将此自定义设置从操作系统转换为Java的最佳方法是什么?我在Eclipse RCP环境中,所以如果有可用的话,我可能会使用与RCP相关的解决方案.

java csv operating-system regional list-separator

8
推荐指数
3
解决办法
6069
查看次数

如何使用Java以编程方式安装所有Java JVM(非默认值)?

有谁知道如何使用Java以编程方式安装所有JVM(而不是默认的JVM)?

例如,用户的计算机上安装了2个JVM:

JDK 5
JDK 6
Run Code Online (Sandbox Code Playgroud)

我需要知道安装的所有版本,以便切换它正在使用的版本(默认情况下),然后以编程方式调用javac以使用特定的JDK版本编译一些源代码.

我一直在寻找网上的一些信息,我发现:

但我找不到我想要的东西.

java jvm

8
推荐指数
2
解决办法
1万
查看次数