Sto provando ad utilizzare Java per creare una chiave di registro di avvio e sto ottenendo un risultato davvero strano. Su alcuni SO come XP, il comando funziona in modo impeccabile. Tuttavia, su Windows 7 crea la chiave solo se si esegue il jar o le classi compilati e non da un'applet in una pagina Web. Inoltre su Windows 8, il comando non funziona affatto. Ho provato il debug di questo, e sembra che il comando REG sta eseguendo con successo. Se eseguo il comando manualmente dal prompt dei comandi, crea le chiavi, con lo stesso risultato di quando viene eseguito all'interno del programma. Ecco un esempio del codice:Il comando Windows REG non funziona quando viene eseguito da ProcessBuilder in Java
public static int regadd(String key, String name, String val) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder(new String[]{"REG", "ADD", key, "/v", name, "/d", val, "/f"});
pb.redirectOutput(new File(PathManager.getDirectory(), "log0.txt"));
int i = pb.start().waitFor();
Logger.log("ADD: " + i);
return i;
}
In log0.txt esso stampa questo:
L'operazione è stata completata con successo.
Inoltre, il "risultato" delle stampe del programma
ADD: 0
Quindi a questo punto, io sono in perdita di quello che potrebbe essere il problema. Sono a conoscenza degli altri modi rischiosi da aggiungere al registro, ma vorrei mantenere il mio codice compatibile con tutte le distribuzioni VM. C'è un modo per realizzare questo o risolvere il metodo di uscita?
Due cose saltano fuori, 1- * "e non da un'applet in una pagina web *" Le applet vengono eseguite all'interno di una sandbox di sicurezza, il che significa che tendono ad avere funzionalità molto limitate quando si tratta di accedere al computer client, come l'esecuzione ad esempio, ad esempio, a meno che l'applet non sia firmata e disponga delle autorizzazioni di sicurezza appropriate, ciò fallirà. 2- Windows 7+ ha un modello di sicurezza diverso da XP. Potrebbe essere che il responsabile della sicurezza di Windows è intervenuto e ha impedito l'azione e si è svolto in modo silenzioso. Ci sono alcune buone ragioni per questo, ma sto esaurendo la stanza. – MadProgrammer
You "potrebbe" provare a eseguire il browser come "Admin", ma non sono sicuro se questo farà la differenza per il modo in cui il plug-in Java è gestito ... – MadProgrammer
[Registry Virtualization (Windows) - MSDN - Microsoft] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884(v=vs.85).aspx) – Holger