PDA

View Full Version : [batch] avvio come Administrator su Vista


71104
25-04-2008, 14:08
adunque: ho un file di batch che deve installare un po' di roba COM: un server out-of-process, un server in-process, e una DLL proxy/stub; per il server out-of-process lo lancio dal bat con l'opzione /RegServer, mentre per le DLL uso regsvr32.exe.

ora chiaramente su XP tutto ok, ma su Vista lo script deve essere avviato come Administrator altrimenti i componenti non riescono ad installarsi (evidentemente non ci sono i permessi necessari su HKCR); il problema però è che se avvio lo script come Administrator la directory corrente non è più quella dove lo script stesso risiede, ma diventa system32 e quindi lo script non trova i files da installare...

vedo tre possibili strade investigative:
1) trovare il modo di cambiare la directory corrente mettendo quella dove risiede lo script; per cambiarla uso CD, ma a CD che gli passo?
2) strada ad hoc per questi casi che io non conosco
3) non usare un file di batch ma qualcos'altro; WSH? (abbiate pietà però, ormai ho fatto il batch e mi piacerebbe molto se esistesse una soluzione rapida e indolore, chessò, una linea di codice da aggiungere nel bat :mc: :D)

voi che suggerite? :help:

71104
25-04-2008, 21:27
:mc:

nuovoUtente86
25-04-2008, 22:07
non puoi utilizzare un path assoluto?

71104
25-04-2008, 22:48
non puoi utilizzare un path assoluto? e come lo pesco? a me serve di cambiare la directory corrente in quella dove risiede lo script (che non so a priori qual è); non c'è modo di ottenere il percorso assoluto di tale cartella? :mc:

71104
25-04-2008, 22:53
e come lo pesco? a me serve di cambiare la directory corrente in quella dove risiede lo script (che non so a priori qual è); non c'è modo di ottenere il percorso assoluto di tale cartella? :mc: in alternativa, non c'è un modo da file di batch per girare con permessi amministrativi? della serie, io lancio un particolare comando, si scurisce il desktop, appare la finestrella di conferma dell'UAC, l'utente conferma, e il bat continua a girare con la stessa directory corrente di prima, ma con privilegi amministrativi. si può? :help:

nuovoUtente86
25-04-2008, 23:10
scusa nell' attuale batch da che posizione parti? se non erro il punto di partenza del prompot di Xp è la homeDirectory dell' utente corrente(come per vista senza privileggi),poi come ti muovi?

71104
26-04-2008, 13:49
scusa nell' attuale batch da che posizione parti? se non erro il punto di partenza del prompot di Xp è la homeDirectory dell' utente corrente(come per vista senza privileggi),poi come ti muovi? nell'attuale file di batch io non faccio nessun cambiamento di directory: do per scontato di trovarmi già in quella dove risiede il batch, che è quella che viene impostata di default da explorer quando si lancia il bat col doppio clic. su Vista invece se faccio doppio clic l'installazione non riesce perché l'account limitato non ha abbastanza permessi su HKCR, quindi dovrei fare clic destro -> Run as Administrator (o qualcosa del genere), solo che in tal modo la cartella corrente viene settata a system32.

nuovoUtente86
26-04-2008, 14:07
nell'attuale file di batch io non faccio nessun cambiamento di directory: do per scontato di trovarmi già in quella dove risiede il batch, che è quella che viene impostata di default da explorer quando si lancia il bat col doppio clic. su Vista invece se faccio doppio clic l'installazione non riesce perché l'account limitato non ha abbastanza permessi su HKCR, quindi dovrei fare clic destro -> Run as Administrator (o qualcosa del genere), solo che in tal modo la cartella corrente viene settata a system32.

si ho provato lanciando come admin da una posizione arbitraria, ma parte dalla system32.

DanieleC88
26-04-2008, 14:22
http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file.aspx

cdimauro
27-04-2008, 08:16
adunque: ho un file di batch che deve installare un po' di roba COM: un server out-of-process, un server in-process, e una DLL proxy/stub; per il server out-of-process lo lancio dal bat con l'opzione /RegServer, mentre per le DLL uso regsvr32.exe.

ora chiaramente su XP tutto ok, ma su Vista lo script deve essere avviato come Administrator altrimenti i componenti non riescono ad installarsi (evidentemente non ci sono i permessi necessari su HKCR); il problema però è che se avvio lo script come Administrator la directory corrente non è più quella dove lo script stesso risiede, ma diventa system32 e quindi lo script non trova i files da installare...

vedo tre possibili strade investigative:
1) trovare il modo di cambiare la directory corrente mettendo quella dove risiede lo script; per cambiarla uso CD, ma a CD che gli passo?
2) strada ad hoc per questi casi che io non conosco
3) non usare un file di batch ma qualcos'altro; WSH? (abbiate pietà però, ormai ho fatto il batch e mi piacerebbe molto se esistesse una soluzione rapida e indolore, chessò, una linea di codice da aggiungere nel bat :mc: :D)

voi che suggerite? :help:
Soluzione 1, realizzata nel seguente modo: generi un file batch con all'interno il comando CD e il path in cui stanno tutti i tuoi file, e lo lanci coi privilegi di amministratore. :cool:

DanieleC88
27-04-2008, 12:22
Nel mio link c'è la (apparentemente giusta) soluzione. :D

71104
27-04-2008, 13:05
Nel mio link c'è la (apparentemente giusta) soluzione. :D infatti funziona benissimo :D

@cdimauro: che dovessi usare CD l'avevo intuito (vedi anche il post che hai quotato :stordita: ), quello che non sapevo era cosa passargli; non conoscevo la variabile %~dp0.