C# 安全模式下的登录提示框

C# 安全模式下的登录提示框,c#,powershell,C#,Powershell,当windows在UAC提示窗口中询问用户名和密码时,是否可以创建一个安全的登录提示框(powershell或C#),并且在字段中写入凭据之前,您无法最小化它 下面是一个简单的ps1脚本,用于请求creds,但它不能以您知道的安全方式完成吗?强制用户提供creds并像UAC登录提示一样锁定所有其他窗口 我知道可以通过$form.TopMost=$True完成,但我不想要这个属性 [int]$cnt = 1 while ( $cnt -lt '1000000000' ) { $user

当windows在UAC提示窗口中询问用户名和密码时,是否可以创建一个安全的登录提示框(powershell或C#),并且在字段中写入凭据之前,您无法最小化它

下面是一个简单的ps1脚本,用于请求creds,但它不能以您知道的安全方式完成吗?强制用户提供creds并像UAC登录提示一样锁定所有其他窗口

我知道可以通过
$form.TopMost=$True
完成,但我不想要这个属性

[int]$cnt = 1
while ( $cnt -lt '1000000000' ) {

    $user    = [Environment]::UserName
    $domain  = [Environment]::UserDomainName

    $credentials = $Host.UI.PromptForCredential('windows update','',$user,[Environment]::UserDomainName)
    $pass = $credentials.getnetworkcredential().password

    Add-Type -assemblyname system.DirectoryServices.AccountManagement 
    $localMachine = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine)
    $credtest = $localMachine.ValidateCredentials($user,$pass)


    if ( $credtest -eq $false ) {

    Add-Type -assemblyname System.Windows.Forms
    $choice = [System.Windows.Forms.MessageBox]::Show("Authentication failed! Please enter correct password", "Reconnection Attempt Failed!", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning)     
    } 

else { 

    break 
    }

    $cnt++
}

UAC提示不仅仅是“锁定所有其他窗口”——它实际上显示在一个不同的桌面上,没有其他用户代码可以运行。这可以防止恶意脚本/应用程序向提示发送窗口消息,例如,该提示可能会违背用户的意愿接受提示

可以强制UAC关闭,但这比默认设置更不安全,通常仅在切换导致图形出现问题时使用


因此,虽然您可以在自定义登录提示中“锁定”其他窗口,它不会像UAC那样成为“安全登录提示框”,因为它缺少桌面切换的关键元素。

UAC提示不仅仅是“锁定所有其他窗口”—它实际上显示在其他桌面上,没有其他用户代码可以运行。这可以防止恶意脚本/应用程序向提示发送窗口消息,例如,该提示可能会违背用户的意愿接受提示

可以强制UAC关闭,但这比默认设置更不安全,通常仅在切换导致图形出现问题时使用

因此,虽然您可以在自定义登录提示中“锁定”其他窗口,但它不会像UAC那样成为“安全登录提示框”,因为它缺少桌面切换的关键元素