Команда в ответе syneticon-dj не работает, поскольку обычный администратор с повышенными правами не имеет доступа для записи ключа. В комментариях упоминается, что вам нужно изменить разрешения. Но это включает в себя много нажатий в regedit.exe и не работает для сценариев установки.
Я использую следующий скрипт PowerShell:
$definition = @"
using System;
using System.Runtime.InteropServices;
namespace Win32Api
{
public class NtDll
{
[DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]
public static extern int RtlAdjustPrivilege(ulong Privilege, bool Enable, bool CurrentThread, ref bool Enabled);
}
}
"@
Add-Type -TypeDefinition $definition -PassThru | out-null
$bEnabled = $false
# Enable SeTakeOwnershipPrivilege
$res = [Win32Api.NtDll]::RtlAdjustPrivilege(9, $true, $false, [ref]$bEnabled)
$key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AlternateShells\AvailableShells", [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,[System.Security.AccessControl.RegistryRights]::takeownership)
$acl = $key.GetAccessControl()
$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")
$key.SetAccessControl($acl)
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ("BUILTIN\Administrators","FullControl","Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)
New-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AlternateShells\AvailableShells" -name 90000 -value "%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\Powershell.exe" -propertyType String
сначала он изменяет разрешения для ключа, а затем устанавливает PowerShell в качестве оболочки.
Обратите внимание, что это может работать только на английской ОС, так как относится к группе «Администраторы».
AvailableShells
ключу, только TrustedInstaller. Я не могу изменить разрешения, не получив права собственности на ключ. Считаете ли вы, что владение системным ключом создаст какие-либо проблемы? Вот ACL моего реестра: gist.github.com/vcsjones/4dca25f94bfb1cfd5857