Задать уровень контроля учетных записей с помощью PowerShell

Я ищу способ установить уровень контроля учетных записей с помощью Powershell / командной строки. Я знаю значение "EnableLUA" в реестре, но это не будет устанавливать уровень. Это просто true или false.

есть ли способ установить уровень контроля учетных записей с помощью Powershell? С уровнем, я имею в виду четыре уровня UAC. Они переходят от "никогда не уведомлять" к "Всегда уведомлять".

спасибо.

28
задан Jente
13.12.2022 4:20 Количество просмотров материала 2529
Распечатать страницу

4 ответа

есть несколько значений реестра, Контроль учетных записей:

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

комбинация этих значений управляет ползунком в графическом интерфейсе, или наоборот.

ссылки: http://msdn.microsoft.com/en-us/library/cc232771.aspx

3
отвечен Patrick Seymour 2022-12-14 12:08

большое спасибо, я понял. Следующий. REG-файл установит контроль учетных записей на уровень 2.

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
отвечен Jente 2022-12-14 14:25

на самом деле там уже существовал вынос сценарий powershell, чтобы вы могли использовать.

вы можете легко найти их в как переключить уровень контроля учетных записей

надеюсь, это может помочь.

Edit

код из указанного сайта Microsoft Technet реализует следующие командлеты:

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

но они не подтверждены для этой ОС (12. Январь. 2017):

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

фрагмент кода:

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
2
отвечен Eric 2022-12-14 16:42

следующий будет установлен на уровень 1 (так же, как ответ выше меня) Уровень 1 такой же, как уровень 2, но не затемняет экран (лучше для использования удаленного рабочего стола и т. д.)

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
0
отвечен Tarquin 2022-12-14 18:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх