2014-07-19 3 views
0

J'ai un code Java qui devrait arrêter le service Windows Lorsque je l'essaie sur d'autres commandes qui n'ont pas besoin d'autorisations d'administrateur qui fonctionne très bien mais pour arrêter le service Windows je dois lancer la commande line as administrator J'ai essayé par exemple le code pour démarrer le bloc-notes juste pour vérifier si cette coopération java avec la ligne de commande fonctionne très bien.Exécuter la ligne de commande en tant qu'administrateur en Java et arrêter le service Windows

String[] start = {"cmd.exe", "/c", "start", "notepad"};        

Process runtimeProcess = Runtime.getRuntime().exec(start); 
int processComplete = runtimeProcess.waitFor(); 

mais si je tente de commande pour exécuter la ligne de commande en tant qu'administrateur qui a échoué:

String[] startAsAdmin= new String [] { 
"CMD.EXE", 
"/C", 
"RUNAS /profile /user:" 
+ "administrator" 
+ " ", "start", "notepad"}; 

Process runtimeProcess = Runtime.getRuntime().exec(startAsAdmin); 
runtimeProcess.waitFor(); 

BufferedReader stdInput = new BufferedReader(new 
InputStreamReader(runtimeProcess.getInputStream())); 

BufferedReader stdError = new BufferedReader(new 
InputStreamReader(runtimeProcess.getErrorStream())); 

BufferedWriter stdOutput = new BufferedWriter(new 
OutputStreamWriter(runtimeProcess.getOutputStream())); 

lire la sortie de la commande et de mettre mon mot de passe d'origine pour commander la ligne lorsque le mot de passe est nécessaire (Zadejte heslo administrateur pro signifie mot de passe requis en anglais)

System.out.println("Here is the standard output of the command:\n"); 
String s = null; 
while ((s = stdInput.readLine()) != null) { 
    System.out.println(s); 
    if (s.startsWith("Zadejte heslo pro administrator:")) { 
     stdOutput.append("password").flush(); 
    } 
} 

Pourquoi si je mets mon mot de passe d'origine pour commander en ligne comme celui-ci il n'a pas les œuvres? Il a dit Accès refusé, mais je suis sûr que le mot de passe est bon et la question suivante est-il possible de savoir comment je peux le faire sans afficher mon mot de passe dans le code?

Ohhh SRY je vois maintenant ur mise à jour, mais il n'a pas commencé encore le bloc-notes:

String[] startAsAdmin= new String [] { 
"CMD.EXE", 
"/C", 
"echo password123 | RUNAS /profile /user:" 
+ "administrator" 
+ " ", "start", "notepad"}; 

Process runtimeProcess = Runtime.getRuntime().exec(startAsAdmin); 
int processComplete = runtimeProcess.waitFor(); 

Répondre

1

Essayez ceci:

String[] stopAdmin= new String [] { 
    "CMD.EXE", 
    "/C", 
    "echo password123 | RUNAS /profile /user:" 
    + "administrator" 
    + " ", "net", "stop", Service_Name}; 

Process runtimeProcess = Runtime.getRuntime().exec(stopAdmin); 

Hope this helps.

+0

Existe-t-il une solution possible sans mot de passe? Et quand je l'ai essayé String [] stopAdmin = new String [] { \t "cmd.exe", \t "/ C", \t "RUNAS/profil/savecred/utilisateur:" "administrateur" \t + \t + "mot de passe" + "start" + "notepad"}; Par exemple, cela ne fonctionne toujours pas, pourriez-vous me dire comment je pourrais obtenir le mot de passe en droit? – Seda

+0

Je ne pense pas qu'il existe un moyen d'exécuter une commande d'administration sans mot de passe. . Tout au plus vous pouvez utiliser l'option/savecred pour entrer le mot de passe une seule fois. Voir mis à jour la réponse – Sanjeev

+0

oukey merci mais encore je ne sais pas où je dois entrer mot de passe ..... "administrateur" + "mot de passe123" ?? .... parce que quand je mets mon vrai mot de passe ici, il ne fonctionne pas encore ou je dois le mettre ailleurs? ou avec un peu d'espace ou? – Seda

Questions connexes