如题;
java 如何指这用户调用 exe;
我调用exe的方式如下:
可指定其它的exe 直接经路径就行,但是运行的EXE程序怎么指定系统用户?在server2003里是以system执行的,怎么指定为Administrator.
用runas 该怎么写?
cmd = new String[]{"notepad"};
Runtime rn = Runtime.getRuntime();
Process p = null;
try {
p = rn.exec(cmd);
InputStream in = p.getInputStream(); StringBuilder sb = new StringBuilder();
String readline = "";
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while (br.ready()) {
readline = br.readLine();
sb.append(readline);
}
br.close();
System.out.println("返回值:" + sb.toString());JavaEXEjava调用EXErunas命令提示符
java 如何指这用户调用 exe;
我调用exe的方式如下:
可指定其它的exe 直接经路径就行,但是运行的EXE程序怎么指定系统用户?在server2003里是以system执行的,怎么指定为Administrator.
用runas 该怎么写?
cmd = new String[]{"notepad"};
Runtime rn = Runtime.getRuntime();
Process p = null;
try {
p = rn.exec(cmd);
InputStream in = p.getInputStream(); StringBuilder sb = new StringBuilder();
String readline = "";
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while (br.ready()) {
readline = br.readLine();
sb.append(readline);
}
br.close();
System.out.println("返回值:" + sb.toString());JavaEXEjava调用EXErunas命令提示符
public static void main(String[] args) throws Exception
{
Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe");
}
有runas 的例子没。上网搜一下runas命令怎么用不就知道了。
public static void main(String[] args) {
String cmd = "runas /env /user:mymachine\\administrator \"notepad \\\"d:\\runas.txt\"\"";
String[] str = new String[]{cmd};
execExe(str);
System.out.println(System.getProperty("user.name"));
}
public static void execExe(String[] cmd) {
System.out.println("参数:"+Arrays.asList(cmd));
Runtime rn = Runtime.getRuntime();
Process process = null;
try {
process = rn.exec(cmd); // 此处报错。。
// 密码输入
OutputStreamWriter os = new OutputStreamWriter(process.getOutputStream());
BufferedWriter bw = new BufferedWriter(os);
bw.write(" * " + "\n");
InputStream in = process.getInputStream();
StringBuilder sb = new StringBuilder();
String readline = "";
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while (br.ready()) {
readline = br.readLine();
sb.append(readline);
}
br.close();
System.out.println("返回值:" + sb.toString()); } catch (IOException e) {
e.printStackTrace();
}
}
输出及错误信息:
参数:[runas /env /user:mymachine\administrator "notepad \"d:\runas.txt""]
Administrator
java.io.IOException: CreateProcess: "runas \env \user:mymachine\administrator "notepad \"d:\runas.txt""" error=2
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)
at java.lang.Runtime.exec(Runtime.java:591)
at java.lang.Runtime.exec(Runtime.java:464)
at com.TestExe.execExe(TestExe.java:27)
at com.TestExe.main(TestExe.java:17)runas /env /user:mymachine\administrator "notepad \"d:\runas.txt"" 在命令行里可以执行;
帮忙看下是哪的问题?
new ProcessBuilder("""d:\Sysinternals\PsExec.exe""", "-u", "thinkbeta", "-p", "better", """E:\PortableApps\CubicExplorerPort
able\CubicExplorerPortable.exe""").start();