Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在另一个Java进程中控制windows?_Java_Swing_Security_Process - Fatal编程技术网

有没有办法在另一个Java进程中控制windows?

有没有办法在另一个Java进程中控制windows?,java,swing,security,process,Java,Swing,Security,Process,我有一个java Swing程序,有时需要在没有用户干预的情况下自行重启。问题是我必须给出一个用 Runtime.getRuntime().exec("java -jar " + applicationJarPath, previousCommandLineArguments); 用于自动登录过程的用户名和密码。并且登录名和密码都不能作为命令行参数传输(出于安全原因)。这同样适用于不在内存中的文件或任何东西。我可以使用套接字,但这可能会造成另一个安全漏洞(如果有人连接到前一个实例等待的同一端口

我有一个java Swing程序,有时需要在没有用户干预的情况下自行重启。问题是我必须给出一个用

Runtime.getRuntime().exec("java -jar " + applicationJarPath, previousCommandLineArguments);
用于自动登录过程的用户名和密码。并且登录名和密码都不能作为命令行参数传输(出于安全原因)。这同样适用于不在内存中的文件或任何东西。我可以使用套接字,但这可能会造成另一个安全漏洞(如果有人连接到前一个实例等待的同一端口)

所以我考虑将用户名和密码打印到相应的控件中

我的问题是:

  • 是否有可能在同一应用程序的另一个实例中找到并控制Swing控件
  • 如果这是不可能的(或相当困难),是否有一种方法可以安全地将用户名和密码传递给程序的另一个实例

  • 现代操作系统旨在防止进程相互访问。有各种进程间通信(IPC)或远程过程调用(RPC)机制以有限和受控的方式允许这样做,但程序必须有意使用它们。换句话说,您的程序必须侦听消息。你不能随意访问其他程序

    您可以通过搜索找到一长串可能的解决方案。在Android等基于Java的平台上有不同的选择。您也可以使用TCP套接字或其他东西来实现自己的功能


    顺便说一句,如果您担心安全性,那么程序的第一个实例首先不应该保留密码。

    “我有一个java Swing程序,有时必须自行重新启动…”为什么需要重新启动?所以您不想使用套接字,命令行参数或文件,因为它可能代表安全风险,但您希望能够远程将输入注入到单独的进程中。。。你不认为这是安全风险吗?您可以使用Robot,但这很麻烦,因为您需要能够聚焦正确的字段,而当您无法检查窗口控件时,这很棘手。您可以生成一个包含凭证的加密文件。加密文件实际上是我和我们的团队停止使用的选项。这是一种安全风险,但我们知道可能产生的影响,并且在将来很容易维护(并且在代码中发现错误的可能性较低)。很抱歉,回答晚了。我们在加密文件选项处停止。起初我不喜欢,但我和我们的团队负责人一致认为,从维护的角度来看,这是最好的选择(如何知道这段代码将来会如何变化)。