|
Questo articolino viene partorito alle 22:30
di una giornata buia e tempestosa, ahh ahh. Una settimana fà mi
sono messo in testa di voler estendere il concetto di "esegui
come", che ci consente di eseguire programmi con credenziali
superiori all' utenza loggata, a tutte le cartelle di disco ed a
tutti gli oggetti della shell ("Risorse del computer", "Risorse
di rete, "Stampanti e fax", etc...). Mi sono detto: sarebbe
bello all'interno di una sessione aperta con una utenza
limitata, aprire ad esempio la cartella di sistema (c:\windows\system32)
come amministratore; oppure viceversa, supponiamo che dobbiamo
settare i diritti di accesso su una cartella e sulle
sottocartelle da parte di un utente: posso aprire una cartella
di base come amministratore, settare le ACL e quindi verificare
subito se l' impostazione è valida aprendo la cartella di base
con l' utenza in questione; analogamente voglio poter aprire
"Risorse del computer" e "Risorse di rete" con qualsiasi altra
utenza all' interno della mia sessione di lavoro; stesso
discorso per le "Stampanti e fax". Ho creato un file in vbscript
ed un file .reg di registro. Ho testato il tutto su Windows XP
(Home e Professional) e funziona, dovrebbe funzionare anche sul
2003 server dove i vantaggi sarebbero superiori, fatemi sapere
al riguardo; su Windows 2000 non ci sono riuscito (forse dipende
da come è implementato explorer.exe). Ed ora passiamo alle
dediche, ahh ahh:
A Cosimo del
newsgroup Microsoft su Windows server per la ventiquattrore
di analisi a Pasqua e dintorni
Ed ora diventiamo un pò seri:
Salva il codice qui sotto come "apri_come.vbs"
e copia il file in C:\windows\system32
Dim StdIn, StdOut, WshShell
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut
Set WshShell = CreateObject("WScript.Shell")
'StdOut.WriteLine WScript.Arguments(0)
'StdOut.WriteLine WScript.Arguments(1)
StdOut.WriteLine "Utenza:"
str = StdIn.ReadLine
'StdOut.WriteLine "runas /profile /user:" & str & " " & chr(34)
& "explorer /root, " & WScript.Arguments(0) & ", " &
WScript.Arguments(1) & chr(34)
if WScript.Arguments.Count = 1 then
if Left(WScript.Arguments(0), 3) = "::{" then
WshShell.Run "runas /profile /user:" & str & " " & chr(34) &
"explorer /root, " & WScript.Arguments(0) & chr(34), 1, TRUE
else
WshShell.Run "runas /profile /user:" & str & " " &
WScript.Arguments(0), 1, TRUE
end if
else
WshShell.Run "runas /profile /user:" & str & " " & chr(34) &
"explorer /root, " & WScript.Arguments(0) & ", " &
WScript.Arguments(1) & chr(34), 1, TRUE
end if
Set StdIn = Nothing
Set StdOut = Nothing
Set WshShell = Nothing
Salva il testo qui sotto come
"apri_come.reg" e fai doppio click sul file per applicare al
registro
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Apri come]
[HKEY_CLASSES_ROOT\Directory\shell\Apri come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs \"%I\" \"%L\""
[HKEY_CLASSES_ROOT\Drive\shell\Apri come]
[HKEY_CLASSES_ROOT\Drive\shell\Apri come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs \"%I\" \"%L\""
;Risorse del computer
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Apri
come]
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Apri
come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
;Stampanti e fax
[HKEY_CLASSES_ROOT\CLSID\{2227A280-3AEA-1069-A2DE-08002B30309D}\shell\Apri
come]
[HKEY_CLASSES_ROOT\CLSID\{2227A280-3AEA-1069-A2DE-08002B30309D}\shell\Apri
come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs
::{2227A280-3AEA-1069-A2DE-08002B30309D}"
;Risorse di rete
[HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\shell\Apri
come]
[HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\shell\Apri
come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs
::{208D2C60-3AEA-1069-A2D7-08002B30309D}"
;Connessioni di rete
[HKEY_CLASSES_ROOT\CLSID\{7007ACC7-3202-11D1-AAD2-00805FC1270E}\shell\Apri
come]
[HKEY_CLASSES_ROOT\CLSID\{7007ACC7-3202-11D1-AAD2-00805FC1270E}\shell\Apri
come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs
::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"
;Pannello di controllo
[HKEY_CLASSES_ROOT\CLSID\{21EC2020-3AEA-1069-A2DD-08002B30309D}\shell\Apri
come]
[HKEY_CLASSES_ROOT\CLSID\{21EC2020-3AEA-1069-A2DD-08002B30309D}\shell\Apri
come\command]
@="cscript c:\\windows\\system32\\apri_come.vbs control.exe"
A questo punto il menù contestuale di
cartelle, drive ed oggetti della shell (quelli specificati nel
.reg) avrà una voce in più: "Apri come"; con questa voce si
aprono gli oggetti in questione con credenziali alternative. E'
importante osservare che se si volesse cambiare il nome del .vbs
oppure la cartella in cui viene salvato, basta cambiare il nome
nel .reg.
|