如何修改PowerShell脚本让AWS Workspaces登录弹窗强制交互?
AWS Workspaces登录弹窗强制交互改造方案
针对弹窗可移动、可调整大小,且用户能绕过弹窗操作电脑的问题,对原脚本做以下修改,实现必须点击「确认」或「注销」才能继续操作:
修改后的完整脚本
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing"); [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objForm = New-Object System.Windows.Forms.Form; # 移除窗口控制按钮,设置固定边框禁止调整大小 $objForm.ControlBox = $False $objForm.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle # 重写窗口消息处理,禁止拖动窗口移动 $objForm.add_WndProc({ param($sender, $e) if ($e.Msg -eq 0x0084) { # 拦截WM_NCHITTEST消息 $e.Result = [System.Windows.Forms.HitTestValues]::Client } }) $objForm.Text = "安全与法律通知"; $objForm.Size = New-Object System.Drawing.Size(640,480); $objForm.StartPosition = "CenterScreen"; $objForm.Topmost = $True; $objForm.ShowInTaskbar = $False # 不在任务栏显示,避免用户切换 $objForm.KeyPreview = $True; $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") {$objForm.Close()}}) $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") {$objForm.Close(); logoff}}) $OKButton = New-Object System.Windows.Forms.Button; $OKButton.Location = New-Object System.Drawing.Size(250,400); $OKButton.Size = New-Object System.Drawing.Size(75,23); $OKButton.Text = "确认"; $OKButton.Add_Click({$objForm.Close()}); $objForm.Controls.Add($OKButton); $CancelButton = New-Object System.Windows.Forms.Button; $CancelButton.Location = New-Object System.Drawing.Size(325,400); $CancelButton.Size = New-Object System.Drawing.Size(75,23); $CancelButton.Text = "注销"; $CancelButton.Add_Click({$objForm.Close(); logoff}); $objForm.Controls.Add($CancelButton); $objLabel = New-Object System.Windows.Forms.Label; $objLabel.Location = New-Object System.Drawing.Size(10,20); $objLabel.Size = New-Object System.Drawing.Size(600,400); $objLabel.Text = "您正在访问仅限官方使用的受限系统。 点击「确认」即表示您同意遵守所有组织安全政策。 禁止授权外人员访问本系统。" $objForm.Controls.Add($objLabel); $objForm.Add_Shown({$objForm.Activate()}); [void] $objForm.ShowDialog();
关键修改说明
- 锁定窗口状态:通过
FormBorderStyle = FixedSingle固定窗口大小,同时重写窗口消息拦截拖动操作,彻底禁止窗口移动和调整。 - 强制独占交互:保留
ShowDialog()模态特性,配合Topmost = $True和ShowInTaskbar = $False,确保弹窗始终处于最上层,用户无法切换到其他窗口或任务栏操作。 - 汉化适配:将所有界面文本改为中文,符合国内使用场景。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

