Вы можете использовать PSExec для выполнения процессов от имени другого пользователя. Командная строка выглядит так:
psexec.exe -u username -p password mybinary.exe
Затем вы можете использовать ProcessBuilder для построения команды вокруг этого.
Редактировать: Вот пример того, как вы можете это сделать:
public int startProcess(String username, String password,
String executable, String... args) throws IOException {
final String psexec = "C:\\PsTools\\psexec.exe"; //psexec location
//Build the command line
List<String> command = new LinkedList<String>();
command.add(psexec);
if(username != null) {
command.add("-u");
command.add(username);
command.add("-p");
command.add(password);
}
command.add(executable);
command.addAll(Arrays.asList(args));
ProcessBuilder builder = new ProcessBuilder(command);
Process process = builder.start();
int returnCode;
try {
returnCode = process.waitFor();
} catch (InterruptedException e) {
returnCode = 1;
}
return returnCode;
}
Затем вы можете использовать его так:
startProcess("Bob", "Password", "Notepad.exe", "C:\\myfile.txt");