MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20090222203254_351121106_20090222203238_1149413548_Run.jpg

Trasformare file batch in eseguibili e avviare programmi come amministratore

a cura di crazy.cat
20/01/2010 - articolo
Tecniche Avanzate - Impartire comandi via prompt è una tecnica ormai poco utilizzata, ma in ambiente di rete può rivelarsi preziosa. Vediamo come trasformare file batch in eseguibili per poi avviarli come amministratore.

Lavorando da alcuni mesi in un ambiente di rete aziendale, dove sono solo amministratore locale dei computer e non posso mettere mano alle policy dei vari utenti, mi sono trovato nella necessità di far avviare ad alcuni utenti con privilegi ridotti alcuni programmi come se fossero amministratori.

Vediamo come fare ad avviare il programma senza dover comunicare all'utente la password di amministratore.

Aggiornato articolo con la nuova versione del programma e inserito un esempio pratico dell'utilizzo.

La prima cosa da fare è scaricare il programma Sanur che trovate in allegato all'articolo insieme all'altro programma Bat To Exe Converter.

Eseguire comandi come amministratore

Grazie a Sanur possiamo far eseguire ad un utente senza poteri di amministratore, un qualsiasi programma che invece li richiede.

Batch.jpg

Basta creare un file batch, .bat o .cmd, che contenga queste due righe.

@echo off

runas /u:%COMPUTERNAME%\administrator PercorsoFileDaEseguire | sanur PasswordAdministrator

Se nel nome del PercorsoFileDaEseguire ci sono degli spazi, per esempio C:\Documents and settings\user\desktop il percorso deve diventare C:\Docume~1\user\desktop.

Il percorso del file deve avere 6 caratteri seguiti dal simbolo della tilde ~, che si ottiene tenendo premuto il tasto Alt, scrivendo sul tastierino numerico (quello a destra della tastiera) 126 e poi rilasciando il tasto Alt, seguito dal numero 1.

La prima riga contiene il comando @echo off che serve per nascondere i comandi successivi e soprattutto la password di amministratore che deve essere scritta nella seconda riga.

Nella seconda riga abbiamo PercorsoFileDaEseguire dove dovete inserire il percorso completo del file da eseguire, diciamo c:\windows\regedit.exe, e in PasswordAdministrator dovete inserire la password dell'amministratore locale del computer.

Trasformare il batch in eseguibile

Un utente smaliziato potrebbe però aprire il file di comandi appena creato e leggere la password dell'amministratore che abbiamo dovuto inserire.

Per risolvere questo problema dobbiamo creare un file eseguibile in modo che la password diventi molto più difficile da leggere.

Per creare un eseguibile però bisognerebbe saper programmare in un qualche linguaggio adatto, e invece no, ci viene in aiuto Bat To Exe Converter è un piccolo programma gratuito che permette di convertire file Bat o Cmd in file eseguibili.

Basta selezionare il file da convertire nella prima riga Batchfile e subito appare in Save as il nome del file eseguibile finale, posizionato di solito nella stessa cartella del file originale, ma possiamo scegliere dove salvarlo.

La cosa più interessante di questa nuova versione del programma è data dall'opzione Visibility, di default è impostata su Visible application, ma selezionando Insivible application potete nascondere l'esecuzione del programma all'utilizzatore del computer.

Al massimo lo si può notare aprendo il Task manager per vedere in azione l'eseguibile.

Il resto delle opzioni le potete lasciare impostate così come sono. C'è anche la possibilità di inserire la richiesta di una password all'avvio del programma, ma se lo scopo è quello di eseguire dei comandi in maniera invisibile questa opzione è poco utile.

Batch1.jpg

Nel Versioninformations potete impostare delle ulteriori personalizzazioni al vostro eseguibile, come un numero di versione e prodotto (che però deve essere nel formato quattro numeri separati dalle virgole.

C'è infine la possibilità di inserire una icona per distinguere il vostro file e varie descrizioni.

Batch2.jpg

Se tutto è andato bene, ed ha accettato tutte le personalizzazioni inserite, l'eseguibile avrà una dimensione maggiore di qualche kB rispetto al file normale. Se provate a creare degli eseguibili in serie, modificando il file di comandi originale, senza cambiare il nome del file, questo verrà salvato con un numero progressivo per distinguerlo dagli altri.

Batch3.jpg

Se volete vedere le personalizzazioni che avete inserito, dovete andare nelle Proprietà del file cliccando con il tasto destro del mouse sul nome del file.

Queste personalizzazioni sono del tutto inutili a livello di funzionalità del file di comandi, possono solo servire a voi se volete rendere più professionale l'eseguibile che andate a creare.

Batch4.jpg

Una volta avviato il file eseguibile che abbiamo appena creato, a seconda delle impostazioni che abbiamo scelto (Visible o Invisibile) ed eventuali comandi echo off inseriti nel file batch originale, potrete o meno visualizzare le schermate e l'esecuzione dei vari comandi.

Batch5.jpg

Un esempio pratico: "Windows Update fai da te."

Per darvi un idea pratica di quello che si può realizzare con Bat to Exe vi spiego quello che ho dovuto affrontare.

Il servizio di distribuzione centralizzato degli aggiornamenti di Windows dei PC che mi trovo ad assistere, provocava dei fortissimi rallentamenti ai computer rendendo impossibile il loro utilizzo per parecchie ore.

Gli amministratori di rete, per motivi troppo lunghi da spiegarvi, decidono di disabilitare il servizio lasciando a me il compito di distribuire gli aggiornamenti su 160 computer.

Dopo alcune prove riesco ad aggirare il problema creando tre eseguibili.

Alcune delle soluzioni adottate sono state scelte a causa delle limitazioni imposte al tipo di utenza utilizzata per accedere alla rete, in altri ambienti e con meno limiti si potrebbe fare in maniera diversa.

Copia.exe

Il primo file, copiato su tutti i computer, conteneva queste righe di comando.

La terza riga del file si occupa di controllare se sul disco di rete N, nella cartella patch, esiste il file Installa.exe.

Se lo trova, si sposta all'etichetta :copia ed inizia a copiare i file sul disco locale del computer da aggiornare.

In seguito manda in esecuzione il file installa.exe che prosegue l'installazione delle patch. Se sul disco di rete non è presente il file installa.exe, ci si sposta all'etichetta :esci e il programma si chiude.

L'eseguibile è stato compilato con Bat to Exe lasciandolo visibile, perché è stato scelto di avviarlo tramite icona posizionata sul desktop e volevo evitare che l'utente ci cliccasse sopra troppe volte.

In questo modo si apre la console di comando del file per alcuni secondi e visualizza solo la scritta Aggiornamento pc in corso.

Poi si chiude la schermata e l'installazione prosegue in maniera completamente invisibile.

Batch6.JPG

È possibile anche mettere il file in esecuzione automatica, oppure se l'utente ha i permessi adeguati, far eseguire il file all'accensione o allo spegnimento del PC.

Installa.exe

Questo file deve contenere la password dell'amministratore locale del computer e avviare il file che gestisce la vera installazione delle patch

Patch.exe

L'ultimo file è stato il più complicato da realizzare, anche a causa delle limitazioni imposte agli utenti di rete.

Mi serviva avere una sorta di report di fine installazione direttamente sul mio computer di rete, non riuscendo dal file batch a scrivere sul disco di rete N: visto in precedenza. Per fare questo uso il comando net use, che si vede nella seconda riga del file, per mappare dal riga di comando una cartella condivisa del mio PC dove ho dato i permessi di scrittura solo al mio utente. Importante è inserire il nome del dominio, l'utenza di rete e la password utilizzata per accedere alla rete.

Nella terza riga c'è la verifica della presenza di un file di controllo utilizzato per impedire di rifare l'installazione delle patch. Se trova il file nella cartella scelta, l'esecuzione dei comandi si sposta all'etichetta :exit1 e abbandona l'installazione, se il file di controllo non è presente va a :copia1 e inizia l'installazione.

Potete utilizzare lo stesso metodo anche per copiare dei file come vedete nella quinta riga: l'opzione /y finale serve per sovrascrivere eventuali file presenti che abbiano lo stesso nome senza richiedere conferma all'utente.

Sempre dallo stesso file si possono aggiungere delle chiavi di registro, come vedete nella sesta riga.

Dalla settima riga comincia l'elenco delle patch da installare: le opzioni finali servono per impedire al PC di riavviarsi dopo l'installazione (/z), installare le patch automaticamente (/m), installarle senza intervento da parte dell'utente (/q).

Alcuni tipi di patch, per esempio mi è capitato l'aggiornamento di Net Framework, potrebbero richiedere delle opzioni diverse. Per scoprirle, basta che da Start - Esegui selezioniate l'eseguibile della patch aggiungendo, in fondo al comando, uno spazio e l'opzione /? così da visualizzare tutte le possibili opzioni previste per quel file.

Con l'ottava riga copiamo il file di controllo nella cartella che abbiamo scelto in modo da impedire di rilanciare l'installazione delle patch.

Nella nona riga faccio creare una cartella nel mio PC che ha il nome %computername% del PC su cui sono state installate le patch. Ho scelto di fare in questo modo perché la copia di un file che aveva nel nome la variabile %computername% non me la lasciava fare e mi chiedeva sempre la conferma della copia.

La decima riga chiude la connessione alla cartella condivisa e disconnette il disco Z.

La riga seguente cancella il contenuto della cartella contenente le patch, tranne il file patch.exe perché è in uso, se decidete di tenerlo come file di comandi (magari perché eseguite gli aggiornamenti allo shutdown del PC) viene cancellato pure questo.

I primi due file sono stati fatti per rimanere sempre uguali, a meno che non cambi la password di amministratore. L'unico a cambiare ogni mese è l'ultimo file che contiene la lista delle patch da installare.

Seguendo lo stesso metodo si possono forzare le modifiche ad alcune configurazioni, come le stampanti di default: basta un unico file in esecuzione automatica che inserisca le chiavi di registro delle stampanti giuste con il comando c:\windows\Regedit.exe /s Chiavi_Registro.reg.

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati