Modificare in remoto un programma su "Esegui come amministratore" per impostazione predefinita


1

Gestisco 50-alcune macchine che stanno riscontrando un errore con alcuni software legacy. Ho parlato con lo sviluppatore, che ha raccomandato di modificare le opzioni di compatibilità su una dozzina di applicazioni su ciascun sistema in Esegui come amministratore.

Tutte le macchine sono impostate in modo che UAC non lo notifichi, quindi non è un problema e tutte le cartelle pertinenti sono condivise, tuttavia non posso farlo \\MACHINE_NAME\path\to\apps\, fare clic con il pulsante destro del mouse app.exe, fare clic su Proprietà e modificare eventuali opzioni nella scheda Compatibilità. Inoltre, non è possibile selezionare in massa le app mentre si controlla in remoto la macchina e impostarle tutte in una volta, devono essere eseguite separatamente e per farlo devo interrompere il flusso di lavoro dell'utente. So che le normali opzioni di compatibilità possono essere modificate nel registro secondo questa domanda, ma anche il flag Esegui come amministratore finisce lì?

C'è un modo per gestirlo con più grazia?


@Ramhound Non vedo come potrebbe essere il caso, considerando che l'utente che ha effettuato l'accesso non ha tutti i privilegi di un amministratore.
Adam Smith,

1
@Ramhound Probabilmente ha UAC impostato su "Non avvisare". Non è possibile disattivare l'UAC senza modifiche al registro. Se un programma non è contrassegnato per elevarsi (dall'intestazione PE o dalle impostazioni di compatibilità o euristica), non verrà eseguito come amministratore.
Darth Android

@DarthAndroid esattamente così. Mi dispiace che non fosse chiaro :) Modificherò
Adam Smith il

Risposte:


3

Anche il flag dell'amministratore finisce lì e viene chiamato RUNASADMIN.

Per impostare programmaticamente le impostazioni di compatibilità delle applicazioni in Windows, aggiungi un valore di registro in uno dei seguenti percorsi:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers (Solo per l'attuale utente)
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers (Per tutti gli utenti sul sistema)

Il valore del Registro di sistema dovrebbe avere il percorso completo dell'eseguibile come nome, essere del REG_SZtipo e contenere un elenco separato da spazi di flag di compatibilità come dati. È possibile configurare fino a 3 diverse impostazioni di compatibilità:

Livello di privilegio:

  • RUNASADMIN - Esegue il programma con il token di sicurezza amministrativo

Impostazioni di visualizzazione:

  • DISABLETHEMES - Disabilita temi visivi
  • 640X480 - Funziona con una risoluzione dello schermo di 640 x 480
  • HIGHDPIAWARE - Disabilita il ridimensionamento dello schermo con impostazioni DPI elevate
  • 256COLOR - Esegui in 256 colori
  • DISABLEDWM - Disabilita la composizione dello schermo

Modalità di compatibilità:

  • WIN95 - Windows 95
  • WIN98 - Windows 98
  • WIN4SP5 - Windows NT 4.0 SP5
  • WIN2000 - Windows 2000
  • WINXPSP2 - Windows XP SP2
  • WINXPSP3 - Windows XP SP3
  • VISTARTM - Vista
  • VISTASP1 - Vista SP1
  • VISTASP2 - Vista SP2
  • WIN7RTM - Windows 7
  • WINSRV03SP1 - Windows Server 2003 SP1
  • WINSRV08SP1 - Windows Server 2008 SP1

fonte


Ad esempio, i seguenti contrassegni un eseguibile che richiede sia i privilegi di amministratore che la modalità di compatibilità per Windows XP SP3:

reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\temp\compatmodel\iconsext.exe" /t REG_SZ /d "WINXPSP3 RUNASADMIN" /f

Per applicare questo in remoto, espandi le impostazioni del registro con i criteri di gruppo, esegui in remoto un comando come sopra o abilita il servizio di registro remoto e usalo per applicare le impostazioni.


Questo è perfetto! Ora appoggiamoci al nostro ingegnere di rete per convincerlo a mandare questo via tramite GP ....
Adam Smith,

-1

Per coloro che desiderano eseguire questa operazione da PowerShell:

Questo utilizza HKCU, se vuoi HKLM, trova / sostituisci quello. Non ho trovato la versione HKLM funzionante, solo HKCU. Forse ha richiesto un riavvio.

#create the key if it doesn't exist already
if(-not (Test-Path -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags"))
{
    $_ = New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name "AppCompatFlags"
}
if(-not (Test-Path -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"))
{
    $_ = New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\" -Name "Layers"
}

#create the value
$_ = New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" -Name "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" -PropertyType String -Value 'RUNASADMIN'

whee! Downvote senza feedback.
Pxtl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.