2013-08-04 5 views
8

Come si avvia/chiama un file batch da un altro, ma con privilegi amministrativi, in modo che non mi dia errori come il seguente?Come avviare un programma con privilegi di amministratore in un file batch

Accesso negato il codice di errore 5

Ecco qualcosa di simile a quello che vorrei che fosse.

echo PLEASE TYPE YOUR USERNAME AND PASSWORD IN THE FIELDS BELOW. 
echo. 
echo. 
echo. 
echo. 
set /p u=Username: 
echo. 
set /p p=Password: 
start next.bat %u% %p% 
+0

Utilizzare il comando 'runas'. –

+0

@a_horse_with_no_name potresti elaborare, ho eseguito 'runas /?' E la sintassi non mostra come fornire una password senza essere richiesta. – cmd

+0

possibile duplicato di [Script batch da eseguire come amministratore] (http://stackoverflow.com/questions/14639743/batch-script-to-run-as-administrator) – Endoro

risposta

1

Fare clic con il pulsante destro del mouse -> Esegui come amministratore.

Penso che Microsoft abbia fatto tutto il possibile per evitare che lo script batch ottenga i privilegi di amministratore autonomamente.

+1

@ jean-Michael_Celerier grazie, ma vorrei farlo nel batch stesso. – cmd

+0

@ cmd vedi l'errore di sicurezza che potrebbe essere? chiunque potrebbe creare uno script batch casuale e formattare c: ... –

+1

non proprio perché dovrebbero ancora fornire la password. quando si esegue come amministratore manualmente, o si aggancia alla barra delle applicazioni e quindi si modifica per eseguire sempre come amministratore (come il mio cmd.exe), non è necessario passare l'amministratore, basta fare clic sul pulsante Sì o dopo aver modificato le impostazioni fai semplicemente clic sull'icona. @ Jean-Michael Celerier – cmd

2

A volte le utilità di terze parti come AutoIt (vedere la funzione runas) non sono un'opzione, ma se si dispone di tale opzione, verificarla in modo che consenta di fare esattamente ciò che si sta puntando. È quindi possibile chiamare lo script AutoIt dal proprio script e utilizzare la relativa funzione runas.

Windows runas non supporta la fornitura di una password a meno che non siate soddisfatti dell'opzione /savecred - che va bene se si esegue l'attività solo da un singolo computer. La prima volta ti chiederà una password, ma dopo non lo farà (anche se devi ancora usare l'opzione /savecred ogni volta che la usi). Ho la sensazione che usare questo potrebbe essere un enorme buco di sicurezza. Ma dal momento che sembra che questo è per la vostra propria macchina, in lotti utilizzare questo:

runas /user:computername\username /savecred yourcommand.exe 

Un altro modo è quello di fare un'operazione pianificata che può essere chiamato dallo script. È possibile eseguirlo utilizzando GUI o da una riga di comando elevata come described here.

È quindi possibile chiamare dal proprio script come questo:

SCHTASKS /Run /TN yourtaskname 
1

@cmd, ho postato un esempio (How can I test effective permissions of a user from a batch script?) per eseguire un altro bat file con ShellExecute e elevated diritti (solo quando è necessario).

Dai un'occhiata se è quello che cerchi e di cosa hai bisogno. In caso contrario, fammi sapere e potremmo adattare il tuo script per farlo funzionare.

buona fortuna

2

In poche parole il file bat nella directory di Windows, e verrà eseguito come amministratore. L'ho provato personalmente e ha funzionato:

C:\Windows\batch_file.bat 

Dovrebbe funzionare così.

+0

Questo ha funzionato anche per me, buon grido. – Alex

2

All'interno del file batch stesso non è possibile eseguire come amministratore, tuttavia se si avvia il file batch da un file .VBS, è possibile specificare un parametro "runas".

set shell=CreateObject("Shell.Application") 
shell.ShellExecute "your_batch_file.bat",,"C:\path\to\thedirectory", "runas", 0 
set shell=nothing 

Questo lancerà il file batch come amministratore, e si può attivare o disattivare la visualizzazione della shell (questo esempio nasconde come volevo che il mio programma da eseguire in background senza essere visti).

1

Indipendentemente dal modo scelto, è necessario accettare eseguirlo con privilegio di amministratore, quindi il punto è in che modo è più breve? È possibile Right Click > Run as administrator come jean-Michael ha detto anche se preferisco l'approccio james (utilizzando vbScript) ma se non si desidera utilizzare un altro file vbScript e si desidera solo il beneficio di fare clic sul file batch e accettare l'esecuzione con privilegio di amministratore (Nota È necessario un tasto destro del mouse e click sinistro meno) vi consiglio questo:

creare un collegamento dal file batch e fare clic destro sul collegamento > Proprietà> scheda collegamento> Avanzate ora controllo Esegui come amministratore check- casella. ogni volta che lo si esegue dal collegamento è sufficiente un clic per accettare eseguirlo con privilegio di amministratore.

Spero che questo aiuto.