从Java调用以其他用户身份运行可执行文件

时间:2019-02-20 02:54:14

标签: java powershell

问题: 我必须调用一个传递2个字符串参数的exe文件。该呼叫必须以其他用户身份执行

我引用了一些从提示中获得的链接。其中有几个使用powershell,很少使用runas示例,依此类推。 但是,对于powershell,我也不确定是否会遇到“由于在该系统上禁用了运行脚本而无法加载”的问题。 正因为如此,我想尝试一些正宗的东西。

尝试以下方法

  1. 尝试通过RunAs命令进行调用使我的生活变得困难。 (使用RunAs命令传递单独的pass.txt或savecred称为批处理文件)。 savecred被大多数人排除在外。其他人没有按预期工作。

  2. Powershell的问题是,即使我运行Java文件,也总是会弹出一个用户ID /密码弹出窗口。

在命令提示符下我也出现错误,如下所示  + CategoryInfo:InvalidOperation:(:) [New-Object],MethodExcept 离子  + FullyQualifiedErrorId:ConstructorInvokedThrowException,Microsoft.Power Shell.Commands.NewObjectCommand

(下面附有示例代码)

public class SamplePS {
public static void main(String[] args) throws IOException {
    Runtime runtime = Runtime.getRuntime();
    String command = "powershell C:\\Users\\Ramu\\Project\\SampleFile.ps1";
    //String cmds[] = {"C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "\\c", "SampleFile.ps"};
    System.out.println("1");
    Process proc = runtime.exec(command);
    InputStream is = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader reader = new BufferedReader(isr);
    String line;
    while ((line = reader.readLine()) != null)
    {
        System.out.println(line);
    }
    System.out.println("2");

}

}

我的ps1文件如下所示

$credential = New-Object System.Management.Automation.PSCredential <<domain>>\<<user id>>, <<password>>
start-process cmd.exe -arg "/k dir" -Credential $credential

处理这种情况的最佳方法是什么? 请提出建议!我不确定该采取什么方法。 Powershell或Perl或任何其他脚本。 无论如何,我都必须从Java文件拨打电话。

请提出建议! 注意:暂时,我不介意以纯文本形式发送密码。 exe文件在Windows计算机中

谢谢! 拉姆

0 个答案:

没有答案