|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2009
Messaggi: 10222
|
Privilegi di amministratore ad una cartella
Ciao, devo spostare la raccolta dei programmi portatili nella partizione di sistema, e ho creato una cartella apposita che contiene tutte le sottocartelle dei programmi in questione. E' possibile dare privilegi di amministatore alla cartella in modo che non debba assegnare a ciascun eseguibile di essere avviato come amministratore?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8697
|
L'esecuzione degli eseguibili e relativi privilegi dipende dal manifest. Se nel manifest è indicato "requireAdministrator" allora automaticamente ad ogni avvio verrà richiesta l'esecuzione con i privilegi elevati, altrimenti no.
L'unica alternativa è il registro: Codice:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . Ultima modifica di x_Master_x : 21-12-2016 alle 18:06. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2009
Messaggi: 10222
|
Ciao, grazie per la risposta. In realtà il valore che hai indicato viene scritto da windows quando decidi tramite la scheda di compatibilità di impostare l'esecuzione del programma come amministratore.
Speravo di poter eliminare la richiesta di conferma tutte le volte che avvio i programmi portatili, che non funzionano a dovere se non sono eseguiti come amministratore quando lanciati dalla partizione di sistema. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8697
|
Aspetta, sono confuso. Prima mi dici "assegnare a ciascun eseguibile di essere avviato come amministratore" e fino a qui ci siamo e poi "eliminare la richiesta di conferma", che conferma? Immagino dell'UAC ma sono due cose diverse.
Questo è il batch di cui parlavo prima: Codice:
: x_Master_x @ECHO OFF SET AdminFolder=C:\Test REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" IF %ERRORLEVEL% EQU 0 REG EXPORT "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "%Folder%\AdminFolder.reg" FOR /R %AdminFolder% %%x IN (*.exe) DO ( REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%%x" /d "RUNASADMIN" ) PAUSE Se il tuo scopo è avviare gli eseguibili come amministratore e allo stesso tempo non avere una conferma dell'UAC richiede l'utilizzo del Task Scheduler ed è necessario un collegamento al file, non è applicabile sull'.exe stesso.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2009
Messaggi: 10222
|
Sì esatto, lo scopo è questo, cosa devo impostare tramite le attività pianificate?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8697
|
VBS da lanciare da CMD elevato come amministratore:
Codice:
' x_Master_x
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\Test"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "EXE" Then
ElevatedTask objFile.Name, objFile.Path
End If
Next
ShowSubfolders objFSO.GetFolder(objStartFolder)
Set objFSO = Nothing
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "EXE" Then
ElevatedTask objFile.Name, objFile.Path
End If
Next
ShowSubFolders Subfolder
Next
End Sub
Sub ElevatedTask(Filename, FilePath)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "SCHTASKS /Create /TN " & AddQuotes(Filename) & " /TR " & AddQuotes("CMD /C START """""""""""" """ & AddQuotes(FilePath) & """") & " /RL HIGHEST /SC ONEVENT /EC Application /MO *[System/EventID=-1] /f", 0, True
Set Shortcut = objShell.CreateShortcut(objFSO.GetParentFolderName(objFile) & "\" & Left(Filename, Len(Filename) -4) & ".lnk")
Shortcut.TargetPath = "SCHTASKS"
Shortcut.Arguments = "/Run /TN " & AddQuotes(Filename)
Shortcut.IconLocation = FilePath
Shortcut.WindowStyle = "1"
Shortcut.Save
Set objShell = Nothing
End Sub
Function AddQuotes(strInput)
AddQuotes = Chr(34) & strInput & Chr(34)
End Function
Per eliminare ogni task e collegamento un altro VBS sempre da CMD elevato: Codice:
' x_Master_x
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\Test"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "EXE" Then
DeleteTask objFile.Name, objFile.Path
End If
Next
ShowSubfolders objFSO.GetFolder(objStartFolder)
Set objFSO = Nothing
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "EXE" Then
DeleteTask objFile.Name, objFile.Path
End If
Next
ShowSubFolders Subfolder
Next
End Sub
Sub DeleteTask(Filename, FilePath)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "SCHTASKS /Delete /TN " & AddQuotes(Filename) & " /f", 0, True
Set Shortcut = objFSO.GetParentFolderName(objFile) & "\" & Left(Filename, Len(Filename) -4) & ".lnk"
If objFSO.FileExists(Shortcut) Then
objFSO.DeleteFile(Shortcut)
End If
Set objShell = Nothing
End Sub
Function AddQuotes(strInput)
AddQuotes = Chr(34) & strInput & Chr(34)
End Function
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . Ultima modifica di x_Master_x : 23-12-2016 alle 16:13. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:22.




















