Articles of Java的

JNA – 查询Windows进程

我正在尝试使用JNA来返回特定Windows进程的详细信息。 不完全确定如何做到这一点。 无法在互联网上find很多帮助。 我想返回的一些信息包括CPU和内存使用情况。 下面只是我find的一个例子。 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import com.sun.jna.*; import com.sun.jna.Library.Handler; import com.sun.jna.platform.win32.*; import com.sun.jna.platform.win32.Advapi32Util.*; import com.sun.jna.platform.win32.WinNT.*; import com.sun.jna.ptr.IntByReference; import com.sun.jna.win32.*; import com.sun.jna.Native; import com.sun.jna.platform.win32.*; import com.sun.jna.win32.W32APIOptions; public class WindowsProcess { public static void main(String[] args) { WinNT winNT = (WinNT) Native.loadLibrary(WinNT.class, W32APIOptions.UNICODE_OPTIONS); […]

如何指定与基础Windows代码页一致的Java file.encoding值?

我有一个使用InputStreamReader通过套接字接收数据的Java应用程序。 它从它的getEncoding方法报告“Cp1252”: /* java.net. */ Socket Sock = …; InputStreamReader is = new InputStreamReader(Sock.getInputStream()); System.out.println("Character encoding = " + is.getEncoding()); // Prints "Character encoding = Cp1252" 这与系统报告的代码页不一定匹配。 例如: C:\> CHCP 有效代码页:850 应用程序可以接收字节0x81,在代码页850中代表字符ü 。 程序使用代码页1252来解释那个字节,它没有在那个值上定义任何字符,所以我得到了一个问号。 我能够通过在启动应用程序的batch file中添加另一个命令行选项来为使用代码页850的一位客户解决此问题: java.exe -Dfile.encoding = Cp850 … 但是,当然,并不是所有的客户都使用代码页850。 我如何让Java使用与底层Windows系统兼容的代码页? 我的偏好是我可以放在batch file中,而不改变Java代码: ENC = … java.exe -Dfile.encoding =%ENC%…

当我运行我的自动刷新,我无法阻止它

如果我点击开始button,我不能点击返回或停止。 我需要停止应用程序。 停止应用程序的一种方法是,您必须closures电脑:D。 当应用程序正在运行时,启动button被locking,我不能点击它。 点击退出button不起作用。 这个应用程序是简单的AutoClicker。 在java中存在比机器人类更好的autoclicker吗? 我该如何解决? 有没有错误的地方? 或者有什么我可以做停止应用程序? import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Robot; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JCheckBox; import javax.swing.JLabel; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.Color; public class AutoClicker extends JFrame { private JPanel contentPane; private final JLabel m = new JLabel("AutoClicker"); /** […]

Java:确定当前Windows用户的程序化方法

我看到很多类似的问题,但是我想find使用Java的当前login用户的用户名。 它可能是这样的: System.getProperty(current.user); 但是,我不太确定。

从Java读取Windows ACL

从Java程序中,我希望能够列出有权读取给定文件的Windows用户和组。 Java没有内置的读取Windows ACL信息的能力(至less在Java 7之前 ),所以我正在寻找其他解决scheme。 是否有任何第三方库可用于直接访问Windows文件的ACL信息? 如果不这样做,也许运行cacls和捕获,然后处理输出将是一个合理的临时解决scheme – cacls的输出格式是否在任何地方彻底logging,是否可能会改变之间的Windows版本?

在Windows中使用java查找特定的registry项

我可以去窗户regedit,然后去编辑 – >find并键入我想在我的电脑(在我的情况下,最大值)find的密钥,并find所需的密钥(的最大值)(在我的情况下,它是在“HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Maxima-5.17.1_is1“),但我需要在java中dynamic地执行此操作,并在Windows中查找当前安装的maxima版本及其目录位置。 我不知道如何进行。 我试图使用这里陈述的方法: 读/写使用Java的Windowsregistry ,但要使用这些方法,我需要知道的关键。 如何在Java中dynamic地find密钥? 或者有没有其他的方法来find在Windows中使用Java的软件的版本和目录位置?

使用SSPI从Windows上运行的Java应用程序获取SSO

我有一个在Windows上运行的Java应用程序,需要使用Kerberos / SPNEGO进行身份validation。 我知道如何configurationJAAS来实现这一目标,但是我发现Java(JDK6和JDK7beta)Kerberos实现缺less一些我需要的重要function。 例如,支持推荐或使用DNS来找出主机的领域(我有一个多领域的环境)。 是否有第三方模块可以使用Windows本机SSPI来实现身份validation? 我们已经经历了configuration我们的Windows客户端在我们的环境中工作的麻烦,不用再为Java做这件事了。 我知道Waffle和它的WindowsLoginModule,但它似乎没有做SSO,因为它要求用户重新input他们的凭据到应用程序中。

构buildjar之后无法运行exe

我做了一个简单的实用程序。 其中我有一个exe文件要运行。 我用它来运行它: Runtime.getRuntime().exec(this.getClass().getResource("filename.exe").getPath()); 当我从ide(Netbeans)运行程序时,我工作得很好。 但是当我尝试使用上面的命令运行exe文件后(即从build立的jar),它根本不工作。 我也试过运行这个: Desktop.getDesktop().open(new File("filename.exe")) 但没有再次使用。 请帮忙

将Java静默安装到具有空格的目录中

我正在尝试使用静默模式安装Java,并指定一个包含空格的安装目录。 当我这样做时,popup“Windows安装程序”对话框,指出其中一个参数是不正确的。 如果我使用短path名称,它的工作是正确的,但我真的不希望使用短目录名称,因为这是存储在registry中的值。 我想要使​​用的命令… jre-6u39-windows-i586.exe /s INSTALLDIR="C:\Program Files (x86)\Java" 这会popupWindows Installer对话框。 当我使用… jre-6u39-windows-i586.exe /s INSTALLDIR=C:\Progra~2\Java 这工作。 注意:“Program Files(x86)”只是一个例子。 这是安装在客户端,他们select安装目录,因此我们必须能够支持他们可能指定的任何目录。 任何想法如何我可以做一个沉默的安装,但仍然使用长path名? 更新: 我想我会分享最后的解决scheme。 一个很酷的事情,我发现我想分享的是,你可以禁止安装的自动重启,它返回一个退出代码3010.因此,你可以推迟到另一次重启。 这里是代码(重写一下,以消除一堆我们自己的抽象) public bool InstallJava(string installPath, string logFile) { bool rebootRequired = false; string fullLogFileName = Path.Combine(logFile, "JavaInstall.log"); string arguments = string.Format("/s /v\"/qn REBOOT=Suppress INSTALLDIR=\\\"{0}\\\" STATIC=1 /L \\\"{1}\\\"\"", installPath, fullLogFileName); ProcessStartInfo startInfo = […]

使用纯c ++或java设置文件夹权限

我正在维护一个使用J2SE开发的软件,(但是我是c#开发人员,实际上没有Java的丰富经验)。 该软件使用访问作为数据存储,这个访问数据库存储在数据库文件夹。 当用户从“标准用户”而不是pipe理员安装此应用程序时,在Windows 7或Vista中,他无法获得数据库文件夹的权限。 为了使软件运行,我们需要为当前用户(标准用户)添加“修改”权限。 其实我search了如何使用Java,但没有发现什么,但我find了一点资源,但还不够。 问题是“我怎样才能授予'修改'权限到当前logging的用户,在c + +(旧c + +不是.net)或使用Java)?