Windows 8.1和Windows 10之间的UAC高程行为差异

保罗·威廉姆斯

我们有一个C#Windows Forms客户端应用程序。有时,此应用程序需要从受信任的内部网站检查自身更新,然后下载,安装并重新启动。

为了使该应用程序与用户帐户控制(UAC)兼容,我们在.exe中嵌入了一个清单,该清单请求最高的可用特权:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

我们希望标准(非管理员)用户能够运行该应用程序,而不会被提示升为管理员。我们授予标准用户对整个应用程序文件夹的完全权限。这意味着用户可以处理软件文件,但这是可以接受的。

在完全启用UAC的情况下,用户一直在Windows 7,Windows 8和Windows 8.1上使用此应用程序。在这些操作系统上,启动我们的应用程序时,Windows不会提示用户提升管理员权限。

现在,我们正在测试Windows 10上的行为。在启用了完整UAC的Windows 10系统上,Windows会提示标准用户升级为管理员。没有其他改变。.EXE是相同的,并且嵌入式清单是相同的请求执行级别highestAvailable

我们已经使用C:\ Program Files和C:\ Users \ Public中的客户端文件对此进行了测试。两个位置具有相同的行为。

为什么Windows 10上的UAC提升行为不同?先前版本的行为是否是UAC中的错误?是否应该一直在提示抬高?

请注意,我们必须保持启用UAC。我知道如何禁用它。

另请注意,我已经测试过将清单更改requestedExecutionLevelasInvoker这并不提示您在Windows 10上提升权限。

- 更新 -

我们已经跟踪了海拔提升,提示本地用户和域用户之间的差异。这篇MSDN文章说:

具有附加特权的标准用户(EG备份操作员)的应用程序启动行为... [将]在运行应用程序之前提示输入凭据

我们看到没有提示本地标准用户提升权限,但是提示本地域用户提升权限。域用户对受限用户的唯一特权是域用户角色的成员。

魔术师1981

你想念的明白highestAvailable这意味着如果您的帐户是admin组的一部分,则请求完整的admin令牌,但是对于普通的标准用户,不会显示UAC对话框,并且该过程将使用标准令牌运行。

如果您的程序需要管理员权限才能运行,则需要requireAdministrator在清单中使用当标准用户启动该过程时,将显示over-the-shoulderUAC对话框,用户可以在其中输入管理员帐户的凭据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Windows 8和Windows 10 Lockscreen在仅1分钟后超时,并且屏幕变黑

在 Windows 10 和 Centos 8 之间同步目录

在Windows 8和Windows 10 PC之间同步应用程序和设置

INotifyCollectionChanged和Windows 8

使用Debian 8和Windows 10和EFI分区

TNetSharingManager和Windows 8和10:访问被拒绝

即使在Windows 7 ClearType中,Windows 8 Metro和Windows 10中的锯齿字体渲染

将Windows 8更新到Windows 10

如何从Windows 10降级到Windows 8?

Windows(8及更高版本)和* Nix之间的体系结构差异

问题:Ubuntu和Windows 8之间的时间不同步

Windows 7和Windows 8的DirectX

在Windows 8和10中修复npm路径

Windows 7/8/10如何存储和保护WiFi密码?

ftp 在 Windows 7 和 10 之间的行为不同

Windows XP和Java 8

Java 11和Java 8 DecimalFormat行为之间的差异

我在oracle虚拟机上运行Windows 8,无法在ubuntu和Windows之间共享

是否可以在Windows 7和Windows 8之间共享已安装的程序?

是什么原因导致Windows和Linux之间的malloc()和free()行为出现差异?

Windows 10 Pro许可证,也是Windows 7和8的许可证

Windows 8上的DirectShow SmartTee行为

在Windows 7,Windows 8.x和Windows 10中,Environment.UserName是否会返回相同的结果?

Windows 和 Linux 之间 QT 的形式差异

Windows和Linux之间的语法差异

Linux和Windows之间的numpy性能差异

Windows和Linux之间的文件差异

Windows 7和8设计的应用程序不会在新的Windows 10上运行,但会在Windows 10上从8升级

Windows 10安装Windows 8驱动程序的风险