Vous pouvez utiliser PSExec pour exécuter des processus en tant qu'utilisateur différent. La ligne de commande ressemble à:
psexec.exe -u username -p password mybinary.exe
Vous pouvez ensuite utiliser ProcessBuilder pour générer la commande autour de ceci.
Edit: ici est un exemple de la façon dont vous pouvez le faire:
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;
}
Vous pouvez alors l'utiliser comme ceci:.
startProcess("Bob", "Password", "Notepad.exe", "C:\\myfile.txt");
Mais il n'y a aucun moyen de spécifier le mot de passe. –