Windows 11 中的登录脚本带有“仅运行指定的 Windows 应用程序”

Windows 11 中的登录脚本带有“仅运行指定的 Windows 应用程序”

我是一名初学者/学生,尝试在 Windows 11 上手动设置信息亭模式以用于教育目的。我已设置组策略“仅运行指定的 Windows 应用程序”以及登录批处理脚本

powershell.exe -windowstyle hidden -file C:\KeepEdgeRunning.ps1

它将启动一个使 MS Edge 保持最大化的 PowerShell 脚本。

function Set-WindowStyle { #copied this from the internet
param(
[Parameter()]
[ValidateSet('FORCEMINIMIZE', 'HIDE', 'MAXIMIZE', 'MINIMIZE', 'RESTORE', 
             'SHOW', 'SHOWDEFAULT', 'SHOWMAXIMIZED', 'SHOWMINIMIZED', 
             'SHOWMINNOACTIVE', 'SHOWNA', 'SHOWNOACTIVATE', 'SHOWNORMAL')]
$Style = 'SHOW',
[Parameter()]
$MainWindowHandle = (Get-Process -Id $pid).MainWindowHandle
)
$WindowStates = @{
    FORCEMINIMIZE   = 11; HIDE            = 0
    MAXIMIZE        = 3;  MINIMIZE        = 6
    RESTORE         = 9;  SHOW            = 5
    SHOWDEFAULT     = 10; SHOWMAXIMIZED   = 3
    SHOWMINIMIZED   = 2;  SHOWMINNOACTIVE = 7
    SHOWNA          = 8;  SHOWNOACTIVATE  = 4
    SHOWNORMAL      = 1
}
Write-Verbose ("Set Window Style {1} on handle {0}" -f $MainWindowHandle, $($WindowStates[$style]))

$Win32ShowWindowAsync = Add-Type –memberDefinition @” 
[DllImport("user32.dll")] 
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
“@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru




$Win32ShowWindowAsync::ShowWindowAsync($MainWindowHandle, $WindowStates[$Style]) | Out-Null}


while($true){
$edge = Get-Process -name "msedge" -ErrorAction SilentlyContinue
if($edge -eq $null){
    $edge = Start-Process "msedge"
}
Foreach($proc in $edge){ #maximizing all subproceses, one of them is the main window
    Set-WindowStyle -MainWindowHandle $proc.MainWindowHandle -Style MAXIMIZE
}
Start-Sleep -Seconds 1

}

问题是我不确定要为组策略启用哪些应用程序。我已启用 powershell.exe、cmd.exe、msedge.exe。但是该函数Set-WindowStyle使用外部库,我不确定是否需要启用任何程序才能使它们正常工作。

脚本运行正常,只是在启用策略时不起作用。也许这不是脚本本身的问题,而是 Windows 11 Insider Preview 出现问题,或者是我还不了解 gpo 的原因。我不知所措。

相关内容