PowerShell ile UAC Seviyesini Ayarla


2

Powershell / Command istemiyle UAC Seviyesini ayarlamanın bir yolunu arıyorum. Kayıt defterindeki 'EnableLUA' değerinin farkındayım, ancak bu seviyeyi ayarlamayacak. Sadece doğru ya da yanlış.

Powershell ile UAC Seviyesini ayarlamanın bir yolu var mı? Seviye ile, dört UAC seviyesini kastediyorum. 'Asla Bildirme' den 'Her Zaman Bildir' e giderler.

Teşekkür ederim.

Yanıtlar:


4

Kullanıcı Hesabı Denetimi'ni denetleyen birkaç kayıt defteri değeri vardır:

  1. FilterAdministratorToken
  2. ConsentPromptBehaviorAdmin
  3. ConsentPromptBehaviorUser
  4. EnableInstallerDetection
  5. ValidateAdminCodeSignatures
  6. EnableLUA
  7. PromptOnSecureDesktop
  8. EnableVirtualization

Bu değerlerin birleşimi, GUI'deki kaydırıcıyı kontrol eden veya tersidir.

Referans: http://msdn.microsoft.com/en-us/library/cc232771.aspx


2

Çok teşekkür ederim, anladım. Aşağıdaki .REG dosyası UAC'yi Seviye 2'ye ayarlayacaktır.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000005
"ConsentPromptBehaviorUser"=dword:00000003
"EnableInstallerDetection"=dword:00000001
"EnableLUA"=dword:00000001
"EnableVirtualization"=dword:00000001
"PromptOnSecureDesktop"=dword:00000001
"ValidateAdminCodeSignatures"=dword:00000000
"FilterAdministratorToken"=dword:00000000

2

Aslında kullanabileceğiniz bir paket servisi powershell betiği zaten vardı.

Onları kolayca bulabilirsiniz. UAC seviyesi nasıl değiştirilir

Umarım, yardımcı olabilir.

Düzenle

Belirtilen Microsoft Technet sitesinin kodu aşağıdaki cmdlet'leri uygular:

  • Set-UACLevel ()
  • Get-UACLevel ()

Ancak bu işletim sistemi için onaylanmadılar (12. Ocak 2017):

  • Windows Server 2012 R2
  • Windows Server 2008
  • Windows 7

Kod pasajı:

New-Variable -Name Key 
New-Variable -Name PromptOnSecureDesktop_Name 
New-Variable -Name ConsentPromptBehaviorAdmin_Name 

Function Set-RegistryValue($key, $name, $value, $type="Dword") {  
  If ((Test-Path -Path $key) -Eq $false) { New-Item -ItemType Directory -Path $key | Out-Null }  
       Set-ItemProperty -Path $key -Name $name -Value $value -Type $type  
}  

Function Get-RegistryValue($key, $value) {  
   (Get-ItemProperty $key $value).$value  
}  

$Key = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" 
$ConsentPromptBehaviorAdmin_Name = "ConsentPromptBehaviorAdmin" 
$PromptOnSecureDesktop_Name = "PromptOnSecureDesktop" 

Function Get-UACLevel(){ 
    $ConsentPromptBehaviorAdmin_Value = Get-RegistryValue $Key $ConsentPromptBehaviorAdmin_Name 
    $PromptOnSecureDesktop_Value = Get-RegistryValue $Key $PromptOnSecureDesktop_Name 
    If($ConsentPromptBehaviorAdmin_Value -Eq 0 -And $PromptOnSecureDesktop_Value -Eq 0){ 
        "Never notIfy" 
    } 
    ElseIf($ConsentPromptBehaviorAdmin_Value -Eq 5 -And $PromptOnSecureDesktop_Value -Eq 0){ 
        "NotIfy me only when apps try to make changes to my computer(do not dim my desktop)" 
    } 
    ElseIf($ConsentPromptBehaviorAdmin_Value -Eq 5 -And $PromptOnSecureDesktop_Value -Eq 1){ 
        "NotIfy me only when apps try to make changes to my computer(default)" 
    } 
    ElseIf($ConsentPromptBehaviorAdmin_Value -Eq 2 -And $PromptOnSecureDesktop_Value -Eq 1){ 
        "Always notIfy" 
    } 
    Else{ 
        "Unknown" 
    } 
} 

Function Set-UACLevel() { 
    Param([int]$Level= 2) 

    New-Variable -Name PromptOnSecureDesktop_Value 
    New-Variable -Name ConsentPromptBehaviorAdmin_Value 

    If($Level -In 0, 1, 2, 3) { 
        $ConsentPromptBehaviorAdmin_Value = 5 
        $PromptOnSecureDesktop_Value = 1 
        Switch ($Level)  
        {  
          0 { 
              $ConsentPromptBehaviorAdmin_Value = 0  
              $PromptOnSecureDesktop_Value = 0 
          }  
          1 { 
              $ConsentPromptBehaviorAdmin_Value = 5  
              $PromptOnSecureDesktop_Value = 0 
          }  
          2 { 
              $ConsentPromptBehaviorAdmin_Value = 5  
              $PromptOnSecureDesktop_Value = 1 
          }  
          3 { 
              $ConsentPromptBehaviorAdmin_Value = 2  
              $PromptOnSecureDesktop_Value = 1 
          }  
        } 
        Set-RegistryValue -Key $Key -Name $ConsentPromptBehaviorAdmin_Name -Value $ConsentPromptBehaviorAdmin_Value 
        Set-RegistryValue -Key $Key -Name $PromptOnSecureDesktop_Name -Value $PromptOnSecureDesktop_Value 

        Get-UACLevel 
    } 
    Else{ 
        "No supported level" 
    } 

} 

Export-ModuleMember -Function Get-UACLevel 
Export-ModuleMember -Function Set-UACLevel

0

Aşağıdaki Seviye 1'e ayarlanacaktır (Benim üstümdeki cevaba çok benzer) Seviye 1, Seviye 2 ile aynıdır ancak ekranı karartmaz (Uzak masaüstü kullanımı vb. İçin iyidir)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000005
"ConsentPromptBehaviorUser"=dword:00000003
"EnableInstallerDetection"=dword:00000001
"EnableLUA"=dword:00000001
"EnableVirtualization"=dword:00000001
"PromptOnSecureDesktop"=dword:00000000
"ValidateAdminCodeSignatures"=dword:00000000
"FilterAdministratorToken"=dword:00000000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.