电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

针对用户帐户控制Vista应用程序开发要求


发布日期:2023/3/5 10:49:00
 

为什么需要用户帐户控制?

一直以来应用程序开发人员所创建的 Microsoft Windows 应用程序都需要过多的用户权限和 Windows 特权这就经常要求执行用户是管理员身份结果几乎没有几个 Windows 用户是在要求的用户最小权限和 Windows 最小特权下运行由于标准用户应用程序兼容性问题许多力求在易部署性易用性与安全性之间取得均衡的企业通常都采取作为管理员部署其桌面的方法

为何在 Microsoft Windows Vista 之前的计算机上难以作为标准用户运行?以下内容详述了另外的原因

许多 Windows 应用程序都要求登录用户是管理员但实际上并不要求管理员级的访问这些应用程序会在允许运行之前执行多种管理员访问检查其中包括

管理员访问令牌检查

系统受保护位置中的完全访问访问请求

将数据写入到受保护位置例如%ProgramFiles%%WinDir% 和 HKLM\Software

许多 Windows 应用程序在设计时都没有采用最小特权这个概念并且没有将用户和管理员功能分为两个不同的进程

默认情况下Windows 和 Windows XP 将每个新用户帐户都创建为管理员;因此关键的 Windows 组件(如日期和时间电源管理控制面板)对于标准用户就不能正常工作

Windows 和 Windows XP 管理员必须创建两个不同的用户帐户 一个帐户用于管理任务另一个是标准用户帐户用于执行日常任务这样用户必须退出其标准用户帐户并作为管理员重新登录或使用运行方式才能执行任何管理任务

借助用户帐户控制(UAC)Microsoft 将提供一种可以简化企业和家庭标准用户桌面部署的技术

按照最初在 Microsoft Windows NT 操作系统中的设计构建 Windows 安全体系结构后UAC 小组力求实现一种兼有灵活性和更多安全性的标准用户模型对于 Windows 先前版本在登录过程中会为管理员创建一个访问令牌该管理员访问令牌包含了多数 Windows 特权和管理安全标识符 (SID)它保证了管理员可以安装应用程序配置操作系统和访问任何资源

在 Windows Vista 中UAC 小组采用了一种截然不同的方法来创建访问令牌当管理员用户登录到 Windows Vista 计算机时将创建两个访问令牌一个是筛选后的标准用户访问令牌一个是完整的管理员访问令牌此时使用标准用户访问令牌而不是管理员访问令牌来启动桌面 (Explorerexe)所有子进程都从桌面的这个初始启动(explorerexe 进程)继承而来从而有助于限制 Windows Vista 的攻击面默认情况下所有用户(包括管理员)都作为标准用户登录到 Windows Vista 计算机

注意 对于以上综述存在一种例外情况访客登录计算机时所具备的用户权限和特权要低于标准用户

当管理员尝试执行管理任务(例如安装应用程序)时UAC 会提示用户批准该操作当用户批准该操作时任务将通过管理员的完整管理员访问令牌启动这是默认的管理员提示行为可在本地安全策略管理器单元 (secpolmsc) 中使用组策略 (gpeditmsc) 进行配置

注意 启用了 UAC 的 Windows Vista 计算机上的管理员帐户也称为管理批准模式下的管理员帐户管理批准模式标识了管理员的默认用户体验

每次管理提升也是特定于进程的这可防止其他进程未提示用户进行批准就使用访问令牌这样管理员用户可以对安装哪些应用程序进行更精确的控制同时又极大沖击了期望登录用户使用完整管理员访问令牌运行的恶意软件

通过使用 UAC 基础结构标准用户也有机会按流程提升并执行管理任务当标准用户尝试执行管理任务时UAC 会提示用户输入有效的管理员帐户凭据这是默认的标准用户提示行为可在本地安全策略管理器单元 (secpolmsc) 中使用组策略 (gpeditmsc) 进行配置

Windows Vista 更新

以下更新体现了 Windows Vista 在功能方面累积的核心变化

默认情况下将启用 UAC

所有后续的用户帐户均创建为标准用户

默认情况下在安全桌面上显示提升提示

后台应用程序的提升提示会最小化到任务栏上

在用户的登录路径中阻塞提升

默认情况下在新安装的系统中禁用内置管理员帐户

用户帐户控制和远程应用场景

新的默认访问控制列表 (ACL) 设置

UAC 工作原理

本部分为应用程序开发人员介绍了 UAC 的体系结构和功能组件其中包括主题Windows Vista 的新技术UAC 体系结构

Windows Vista 的新技术

以下各部分详细介绍了 Windows Vista 所应用的新技术

安装程序检测

通过 Windows Installer 为标准用户修补应用程序

用户界面特权隔离

虚拟化

UAC 体系结构

以下图表体现了可执行程序在 Windows Vista 中的启动流程

UAC 体系结构

以下内容介绍了 UAC 体系结构图表中显示的流程以及当可执行程序尝试启动时如何实现 UAC

标准用户启动路径

Windows Vista 标准用户启动路径与 Windows XP 启动路径类似只不过包含了一些修改

ShellExecute() 调用 CreateProcess()

如果应用程序需要提升CreateProcess() 会调用 AppCompatFusion 和 Installer Detection 进行评估然后对可执行程序进行检查以确定其 requestedExecutionLevel(存储在可执行程序的应用程序清单中)AppCompat 数据库存储应用程序的应用程序兼容性修复条目信息Installer Detection 检测安装执行程序

CreateProcess() 返回声明 ERROR_ELEVATION_REQUIRED 的 Win 错误代码

ShellExecute() 专门等待这个新错误收到该错误后立即全面调用应用程序信息服务(AIS) 以尝试进行提升后的启动

已提升启动路径

Windows Vista 的已提升启动路径是一种新的 Windows 启动路径

AIS 收到来自 ShellExecute() 的调用然后重新评估所请求的执行级别和组策略以确定是否允许提升并定义提升用户体验

如果请求的执行级别需要提升则该服务将使用从 ShellExecute() 传入的 HWND 启动调用方交互桌面上的提升提示(基于组策略)

如有必要在用户给予同意或提供有效凭据后AIS 将检索与相应用户关联的对应访问令牌例如对于只属于备份操作员组的用户成员和属于本地管理员组的用户成员请求 highestAvailable 的 requestedExecutionLevel 的应用程序所要检索的访问令牌是不同的

AIS 重新发出 CreateProcessAsUser() 调用提供管理员访问令牌并指定调用方的交互桌面

UAC 是否会影响您的应用程序?

您的应用程序是否会受到 UAC 的影响取决于应用程序的当前状态多数情况下无需进行任何更改就可符合 Microsoft Windows? 安全要求然而有一些应用程序(包括业务线 (LOB) 应用程序)可能需要对其安装运行和更新过程进行更改才能在 Windows Vista UAC 环境中正常工作

注意 如果应用程序在 Windows XP 上可作为标准用户正常运行那么它同样也可以在 Windows Vista 上作为 STANDARD 用户正常运行

有关本主题的详细信息请参阅 Windows 帮助文件中的以下分部分

为什么需要消除应用程序的管理依存性?

降低应用程序的总体拥有成本

如何确定应用程序是否存在管理依存性?

对于合法的管理员应用程序有什么要求?

为 Windows Vista 设计应用程序

以下列表介绍了为 Windows Vista 设计应用程序的工作流

第一步测试应用程序的应用程序兼容性

第二步将应用程序分类为标准用户管理员或混合用户应用程序

第三步重新设计应用程序功能以兼容 UAC

第四步重新设计应用程序用户界面以兼容 UAC

第五步重新设计应用程序的安装程序

第六步创建应用程序清单并将应用程序嵌入其中

第七步测试应用程序

第八步使用 Authenticode 对应用程序签名

第九步加入 Windows Vista Logo Program

为标准用户部署和修补应用程序

通常各企业必须考虑如何以自动化方式将应用程序安装到其用户的工作站上以此来降低管理成本这个问题基本上涉及两方面一是如何将这些应用程序打包以进行部署二是利用什么技术对其进行部署在小型企业环境中可能不需要采用加强的自动化部署机制

上一篇:亲赴鬼门关!手把手玩转微软黑屏

下一篇:微软谈Windows7启动画面