我正在为我们的用户创建一个简单的应用程序,以检查特定用户在PC上是否处于活动状态并返回结果。
该应用程序由两部分组成,一部分将分发给我们的年长者,他们可以设置他们的状态(会议,休息等),另一部分将由我们的下级人员使用,以检查年长者是否可以随时为您提供帮助给定时间。
它通过运行PowerShell脚本来工作,该脚本对PC进行ping操作,检查用户并将结果存储在网络共享上的(可访问)哈希表中。
这两个应用程序在被管理员使用时都可以正常运行,但是当普通用户尝试使用相同的应用程序时,就会出现问题,只是它们没有运行所需的PS脚本。
我有99%的把握要确保用户权利是罪魁祸首,但我一直在努力寻找足够简单的解决方案。
我还设置了一个GPO(通过gpresult和rsop.msc检查了PC),理论上应该允许它:
计算机配置>策略>管理模板> Windows组件> Windows PowerShell-打开脚本执行-允许所有脚本。 (不安全,但这只是出于测试目的:))
运行脚本的Java代码段如下所示:
run_script(String path) throws IOException {
String command = String.format("powershell.exe -executionpolicy bypass -file %s",path);
String result;
Process powerShellProcess = Runtime.getRuntime().exec(command);
powerShellProcess.getOutputStream().close();
BufferedReader brd= new BufferedReader(new InputStreamReader(
powerShellProcess.getInputStream()));
while ((result= brd.readLine()) != null) {
System.out.println(result);
}
brd.close();
BufferedReader err= new BufferedReader(new InputStreamReader(
powerShellProcess.getErrorStream()));
while ((line = err.readLine()) != null) {
System.out.println(result);
}
err.close();
}
仅重复这一重要部分,当管理员运行该应用程序时,一切运行良好,只有普通用户无法获得预期的结果。
最后,我的问题:)
是否可以通过Java应用程序在没有管理员权限的情况下在Java远程计算机上运行类似的代码,并且有其他方法可以获取所需的结果(ping PC,检查用户,不使用PowerShell返回结果)?
在此先感谢您的任何建议!