View Full Version : [Batch]Link con privilegi amministrativi
23Andrea
15-02-2020, 09:34
Ciao.
Devo lanciare uno script batch per "trascinamento", spostando l'icona del file da elaborare sulla icona del link dello script: nel codice dello script il parametro %1 restituisce il percorso completo del file.
Il nome del file (o il percorso) possono contenere degli spazi.
Se lo script deve essere eseguito senza privilegi amministrativi, tutto ok: il parametro %1 viene trasformato automaticamente nel percorso virgolettato.
Ma io ho bisogno di eseguire lo script con privilegi amministrativi: nelle proprietà avanzate del collegamento ho selezionato l'opzione "Esegui come amministratore" perchè sia richiesta l'elevazione dei privilegi.
In questo caso, però, se il percorso completo contiene degli spazi, lo script si chiude senza essere eseguito.
C'è una soluzione?
Grazie.
23Andrea
15-02-2020, 10:58
Si.
Non funziona.
prova con:
SET MIO_PATH=%1
bla
bla
bla
e poi usi %MIO_PATH% in luogo di %1
23Andrea
15-02-2020, 15:03
Continua a non funzionare.
Non riesco a capire se sia un bug o un contorto meccanismo di sicurezza o cos'altro.
Ho provato questo:
SET MIO_PATH=%1
ECHO %MIO_PATH%
PAUSE
Se il link non eleva i privilegi, restituisce il percorso in ogni caso (con spazi vuoti o no).
Se il link eleva i privilegi, restituisce il percorso solo se è senza spazi.
Ho provato a creare due files nello stesso percorso:
- uno con nome "Pippo.txt Pluto.txt"
- l'altro con nome "Pippo.txt"
Se il problema fosse la mancata virgolettatura del nome, trascinando il primo file si dovrebbe ottenere il percorso completo del secondo: perchè i percorsi sono uguali e il nome del primo file sarebbe troncato in corrispondenza dello spazio.
Ma non funziona nemmeno così: quindi non è un problema di virgolettatura :muro:
esagerando
SET MIO_PATH="%1"
ECHO "%MIO_PATH%"
PAUSE
23Andrea
15-02-2020, 16:49
Macchè :mad:
Forse devo cambiare tattica: scrivere due righe di VBS per aprire lo UAC prima dello script:incazzed:
temo sia una policy di windows
se provi ad aprire una shell con l'attuale user e trasccini al suo interno un file anche con spazi vedi percorso completo tra doppi apici.
Se apri una shell come amministratore e fai la stessa cosa cioè, trascini un file al suo interno non appare nulla.
23Andrea
16-02-2020, 10:52
temo sia una policy di windows
...
Ma dai!...una policy che funziona solo con i nomi che contengono spazi?
Non ci mancava che questo!
"%*"
Non funziona nemmeno questo.
Io mi arrendo. Grazie lo stesso a tutti.
ultimo tentativo, provare con:
runas /user:DOMINIO\Administrator "pippo.bat %1"
da mettere al posto del "path+nome file batch" nel link simbolico
Potresti usare il powershell e aggirare il problema.
Ovvero converti il tuo batch in .ps1 (che dovrebbe funzionare out of the box).
Nel tuo "lancia.bat" lo modifichi così
SET MIO_PATH=%1
@powershell.exe -NoProfile -ExecutionPolicy Bypass -File "loScript.ps1 -paramtero '%MIO_PATH%' "
Dovrebbe funzionare così, in alternativa verifica solo se c'è un modo diverso per passare il parametro che non sono sicuro su apice singolo o doppio apice
alla fine la soluzione era banale
al link simbolico aggiungi la parte in grassetto:
%Windir%\System32\cmd.exe /C C:\miadir\mio.bat
più che policy forse è un bug di windows
23Andrea
17-02-2020, 13:53
Grande!
Funziona davvero :)
Grazie mille!
Grande!
Funziona davvero :)
Grazie mille!
che versione di windows stai usando?
23Andrea
17-02-2020, 14:33
Windows 7 pro SP1 (x64)
Windows 7 pro SP1 (x64)
io l'ho testato con win 8.1 home ed ha il medesimo problema del tuo win 7 pro quindi, un baco storico che si risolve anche in win 8.1 nel medesimo modo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.