本文中的最佳做法可帮助你构建出色的 Windows 应用,让全球大约 15 亿台不同电脑用户满意。 本文分为以下部分:
用户体验:本部分中的指南可帮助你改进应用的外观、感觉和可用性。
性能和基础知识:本部分中的指南可帮助你提高应用的性能和资源利用率。
作系统/硬件优化:本部分中的指南可帮助你针对各种硬件配置优化打包和分发。
应用程序发现和管理:本部分中的指南可让用户更轻松地发现、安装、更新和卸载应用。
辅助功能:本部分中的指南可帮助你构建可访问和包容性体验。
安全和隐私:本部分中的指导可帮助你缓解安全风险并满足用户的隐私需求。
用户体验 (UX)
Windows 11 提供 Windows作系统的视觉演变,可改善 Windows 的外观、感觉和可用性。 研究表明,用户对 Windows 应用寄予厚望:
期望 Windows 应用适用于完整输入范围。
期望设计和交互模式在当前和未来设备上的外观和感受都是原生的。
期望支持新式窗口化工作流和 shell 集成点。
当应用程序遵循 Windows 样式和标准 Windows 行为时,用户无需重新学习交互模式。 这种一致性使用户使用你的应用变得更加容易。 一款看起来很棒的应用可以留下出色的第一印象,而一款既易于使用又能够帮助用户实现其目标的应用会留下持久的印象。
Windows 11 以 Windows 11 设计原则为基础构建。 构建应用时遵循这些准则有助于满足客户对出色应用体验的期望。 在考虑将最新和推荐的 Windows 应用程序 UI/UX 模式合并到 Windows 应用程序中时,请关注以下五个方面:
版式
UI 交互
视觉样式
窗口行为
Shell 集成点
WinUI 通过其常见控件为其中许多体验和样式提供内置支持。 如果无法使用 WinUI,请考虑模拟在我们的设计工具包和WinUI Gallery中展示的样式。
版式
Windows 应用程序在满足用户需求的各种配置上运行。 在各种维度、设备、窗口大小、DPI 设置和缩放设置下测试您的应用程序的窗格和页面。 应用程序即使缩小为小维度,也应按预期方式运行。
DPI 感知
WinUI 应用程序会自动缩放其运行的每个显示。 其他 Windows 编程技术(Win32、WinForms、WPF 等)不会自动处理每监视器 DPI 缩放。 如果没有额外工作来支持每个监视器的 DPI 缩放,这些技术可能导致应用程序显示模糊或大小不正确。 有关详细信息,请参阅 Windows 上的高 DPI 桌面应用程序开发。
响应式布局
使用响应式设计技术,以针对不同窗口大小优化应用页面。 请遵循平移或滚动指南,确保无论应用窗口变得多么小,用户都始终可以访问内容。
UI 交互
Windows 用户可以从多种输入设备中进行选择,以便与你的应用程序进行交互,并且 Windows 具有人们习惯使用的特定系统体验。 如果你的应用程序遵循这些体验,你的用户便能可靠地使用应用程序。 当你的应用不遵循这些约定时,用户可能会发现它令人困惑或令人沮丧。
对象上命令
使用对象上命令,例如上下文菜单、轻扫命令和键盘快捷方式。 Windows 11 改进了右键单击上下文菜单的行为,因此,如果应用创建上下文菜单,请参阅最新的 上下文菜单 集成指南。 WinUI 文本控件会自动公开剪切、复制和粘贴命令,但其他控件可能需要额外的工作来支持这些命令。
文本交互
每当应用程序中有文本时,用户都希望他们可以选择并复制它。 如果文本是可编辑的,则用户也会希望自己能够进行剪切和粘贴。 通过向用户提供一致的快捷方式,可以让他们更高效地完成其任务。 确保用户可以使用键盘、鼠标或触控板、触摸和笔执行这些作。
平移和滚动
应用程序的用户界面完全适配于不需要滚动的单个页面的情况并不常见。 即使只有几个 UI 元素,用户也可以自由调整应用窗口的大小,并导致某些 UI 元素被隐藏。 确保应用程序的 UI 正确支持滚动和平移(使用键盘、鼠标或触控板、触摸和笔),让用户访问可能移出可见窗口区域的任何 UI 元素。
视觉样式
Windows 11 基于 Windows 11 设计原则构建:轻松、冷静、个性、熟悉和完整 + 连贯。 遵循这些原则的体验在 Windows 上带来了出色的用户体验。
材料:亚克力和云母
亚克力和云母是视觉材料,可为交互式 UI 控件提供独特的“封闭”视觉样式。
使用 Acrylic 将半透明样式应用于临时性表面,例如上下文菜单、浮出控件和其他用户可以轻松关闭的元素。
使用 Mica 向长期 UI 图面添加微妙的自适应色调。
Mica 是一种性能非常高的材料,用于 TitleBar 等长期 UI 图面,以传达应用的活动或非活动状态。 Mica 是一种纹理,可在节省电池寿命的同时创造视觉愉悦。
Mica 将用于应用 UI 的基本层,以传达应用的活动状态;当应用没有焦点时,会回退到纯色。 因此,建议在 TitleBar 的背景上使用 Mica。
某些控件(如 NavigationView)已经内置了默认行为。
当使用 Mica 的应用在 Windows 10 或更低级别运行时,它会正常降级(Mica 将回退到纯色)。
Mica 用于长久的表面,与之不同,Acrylic 用于瞬态表面。
如果使用 Acrylic 材料,请遵循现有的 Acrylic 指南,我们已更新颜色,使其更加生动。
Mica 指南、Acrylic 指南
深色和浅色主题
深色和浅色主题为用户提供了一种适应其视觉首选项的方法。 Windows 11 更新了色调,避免使用纯白和纯黑两种颜色,从而提供更柔和的视觉体验,让颜色看起来更令人愉悦。
WinUI 默认支持在深色和浅色主题之间切换(请参阅 XAML 主题资源)。 对于 Win32 应用,请参阅在 Win32 应用中支持深色和浅色主题。 (Win32 应用中的标题栏不会自动适应深色主题。请务必按照文章中的 标题栏指南 进行作。
刷新的 UI 元素
Windows 11 为 Windows 操作系统带来了出色的 UI 创新,你可在应用中利用这些创新。
Windows 11 几何图形 支持新式应用体验。 渐进式圆角、嵌套元素和一致的线槽组合在一起,产生了一种舒适、稳定和易使用的效果,强调了目的和易用性的统一。
视觉对象和行为更改内置于 WinUI 中。 尽可能使用 WinUI,充分利用 Windows 开发团队已经完成的工作。 如果无法使用 WinUI,请考虑模拟 设计工具包 和 WinUI 库中演示的样式。
常见控件 是可以立即使用这些更新的一种方法。 尽可能使用最新的常见控件,可免费获得兼容性和辅助功能带来的好处。 考虑到维护和测试成本,使用这些常见控件比构建自己的自定义控件更具成本效益。
上下文菜单扩展和共享目标
上下文菜单是用户通过右键单击或点击和按住作调用的快捷菜单,用于显示与用户与之交互的控件上下文相关的命令菜单。 用户希望上下文菜单的外观和行为在 Windows 中保持一致。 请尽可能使用平台提供的上下文菜单,以使它们与系统的其余部分保持一致。
Windows 11 改进了文件资源管理器和“共享”对话框的右键单击上下文菜单中上下文文件操作的行为。 如果应用创建上下文菜单或定义共享目标,可能需要进行一些更改,以确保这些更改在 Windows 11 中运行良好。
上下文菜单
对于 Windows 11,我们通过若干方式改进了文件资源管理器的上下文菜单的行为:
常见命令(如“剪切”、“复制”、“粘贴”和“删除”)已移到菜单顶部 。
打开和打开方式现在组合在一起 。
应用扩展在 Shell 谓词下方组合在一起。 具有多个动词的应用将分组到具有应用标识的浮出控件中。
云文件提供程序应用放置在 Shell 命令旁边,用于解冻或冻结文件。
Windows 10 中的旧上下文菜单(以及旧上下文菜单中较少使用的命令)仍可通过菜单底部的“显示更多选项”项使用。
Shift + F10 或键盘菜单键也会加载 Windows 10 上下文菜单。
如果应用定义了上下文菜单扩展,则必须满足以下要求才能在新的 Windows 11 上下文菜单中显示该扩展。 否则,应用的上下文菜单扩展将显示在通过“显示更多选项”项提供的较旧的上下文菜单中。
上下文菜单扩展必须使用 IExplorerCommand 接口来实现。 实现 IContextMenu 的上下文菜单扩展将显示在旧的上下文菜单中。
应用必须是打包的应用,以便在运行时获得包标识。 有关用于打包应用的一些选项,请参阅需要包标识的功能。
“共享”对话框
对于 Windows 11,我们通过若干方式改进了“共享”对话框的行为。
就近共享的可发现性设置现在位于对话框顶部,底部提供了更多设置。
现在,所有应用都可以作为目标参与“共享”对话框,包括未打包的桌面应用和通过 Microsoft Edge 安装的 PWA。
如果使用外部位置来打包以前未打包的桌面应用,则该应用可以作为目标参与“共享”对话框(请参阅通过使用外部位置进行打包来授予包标识)。 有关演示如何执行此操作的示例代码,请参阅 SparsePackages 示例应用。
如果 PWA 实现 Web 共享目标 API,则它可以参与“共享”对话框。
图标和版式
Windows 11 更新了图标(“Segoe Fluent 图标”),改进了对动画图标的支持,并具有新的 UI 字体(“Segoe UI 变量”)。 在 Windows 11 上尽可能一致地使用这些新图标和字体。 新字体使用更柔和的几何图形,使文本更加清晰。
为单行图标引入了名叫“Segoe Fluent Icons”的新图标。 WinUI 2.6 及更高版本中的控件会自动使用新图标和版式。
文件类型图标已更新。 如果应用在 imageres.dll 或 shell32.dll 中使用图标,则图标将自动更新。 否则,可能需要手动更新样式。
应用图标 - 遵循 Windows 应用中 在“开始”和“任务栏”上启动器等位置使用的图标的最新指南。
动画图标 - Lottie 动画支持已添加到 WinUI,我们建议使用 AnimatedIcon 功能以有意义的方式对图标进行动画处理。 与其他样式更改一样,你需要 WinUI 2.6 或更高版本。
以 XAML 编写的在代码中指定 Segoe UI 的自定义体验应改为指定 Segoe UI Variable。
注释
当使用新字体的应用在 Windows 10 或更低级别运行时,它将回退到使用旧字体并适当降级。
窗口行为和样式
应用程序在 Windows 提供的框架中运行。 用户期望内置 Windows 外观和行为在应用窗口中保持一致。 若要确保应用在 Windows 11 上的外观和功能正常,请考虑支持此处列出的功能。
标题栏和字幕按钮
用户与标题栏和标题按钮(最小化、最大化、关闭)进行交互,以调整大小、移动和关闭应用窗口。 一致的体验可帮助用户顺利使用应用程序。 请参阅 Windows 应用程序标题栏,了解适用于 Windows 的标题栏和字幕按钮设计。
可使用 Windows 应用 SDK API 在 WinUI 3、.NET、WinForms 和 WPF 应用中将应用内容与标题栏集成。
贴靠布局
Windows 11 中的窗口对齐功能大大增强,“对齐布局”菜单是一项新功能,可帮助用户发现和利用窗口对齐的优势。 使用贴靠布局菜单在不同的贴靠布局中测试应用,确保应用支持不同的贴靠尺寸(如 1/2、1/3 和 1/4 屏幕)。
通过将鼠标悬停在窗口的最大化按钮上或按 Win + Z,可以轻松访问对齐布局。调用显示可用布局的菜单后,用户可以单击布局中的区域,将窗口对齐到该特定区域,然后使用“贴靠助手”完成整个窗口布局的生成。 对齐布局根据当前屏幕大小和方向定制,包括支持大型横向屏幕上的三个并排窗口,以及纵向屏幕上的上/下堆叠窗口。
大多数应用程序会自动支持带有贴靠布局的菜单,但在某些情况下,您可能需要进行一些工作才能实现这些功能:
允许系统绘制边框和阴影。
如果需要绘制自己的边框和阴影:
使用我们的 API,让平台绘制和实现字幕按钮。 请参阅支持 Windows 11 桌面应用的对齐布局。
如果使用 Windows 应用 SDK 的窗口功能以执行以下操作,则会自动获得这些功能:
使用预定义模板配置窗口样式。
自定义窗口的标题栏。
圆角
在 Windows 11 中,我们对窗口边框进行了圆角处理。 我们的用户研究团队发现,圆润的几何图形在心理上提供一种安全感,并且使应用的 UI 更易于扫描。 这使用户更少感觉威慑,也使应用更具吸引力。 圆角处理的量也是精心选择的。 我们与公司各部门和用户研究部门合作,力求在专业性和更柔和、更具吸引力之间找到平衡。
在大多数情况下,你的应用程序的窗口默认在 Windows 11 上是圆角的。 如果您自定义应用窗口时没有圆角,请参阅 适用于 Windows 11 桌面应用中应用圆角 以了解可以执行的操作。 此外,还应避免自定义窗口边框和阴影,这会阻止系统将窗口显示为圆角。
Shell 集成点
即使应用未在前台运行或屏幕上可见,Windows shell 集成也允许用户从你的应用中受益。 当应用与 Windows 很好地集成时,它将成为用户与其他应用的工作流的一部分,并帮助创建无缝体验。
Toast 通知
Toast 通知是显示在用户屏幕底部和通知中心的 Windows 通知。
个性化并使其可执行,并确保通知对用户有用。 向用户提供他们想要的内容,而不是你希望他们知道的内容。
避免噪音通知。 应用中断过多,导致用户为应用关闭此关键通信通道。
响应用户的意向。 选择通知应在通知的上下文中启动应用。 此指南的唯一例外是用户在通知上选择附加到后台任务(如快速回复)的按钮这一情况。
提供一致的通知中心体验。 通过清除旧通知保持通知中心整洁。
有关 Toast 通知的详细信息,请参阅通知设计基础知识。
性能和基础知识
Windows 用户希望 Windows 应用表现出出色的性能和基础。 在设计和构建应用时,请记住针对内存使用情况、电源消耗、响应能力、可靠性和对长期可持续性的影响进行优化。 分配时间来测试和衡量应用程序的基础知识和性能可确保用户具有一流的体验。
遵循本部分中的最佳做法可帮助你满足客户在这些条件中的期望。
使应用程序内存使用量最小化:
减少前台内存使用量。
使后台工作最小化。
在后台释放资源。
确保应用程序不会泄漏内存。
高效利用磁盘占用空间:
为可选功能启用“付费播放”。
确保所有缓存都高效调整大小。
以节省磁盘的方式实现新体验。
尽可能优化单个二进制大小。
通过最大程度减少后台工作来提升能耗和延长电池生命:
不要在后台唤醒 CPU 或使用系统资源。
提高应用的启动和密钥交互的响应能力:
定义主要交互场景,并添加 ETW 事件以进行衡量。
根据与用户期望关联的交互类设置目标。
有关详细信息,请参阅 性能和基础知识概述。 本文回答了以下问题:“什么是应用程序性能,为什么很重要?”和“我可以使用哪些工具来衡量 Windows 应用程序性能?”它还链接到案例研究、相关博客、支持社区以及性能工程如何通过减少应用程序对我们星球的影响与可持续性相交的信息。
操作系统和硬件优化
可以通过多种方式生成、打包和交付 Windows 应用。 本部分中的最佳做法可帮助你跨硬件配置优化应用程序的这些方面。
人们在传统设备以及越来越多样化的现代设备中运行 Windows。 如今的设备不仅具有基于 x86/x64 的设备,还附带基于 Arm 的体系结构:不仅使用鼠标和键盘,还具有触摸屏、触摸板和笔:具有相机、GPS 和传感器(如陀螺仪);以及图形和神经处理芯片集,不仅能实现惊人的视觉对象,还能实现硬件加速的人工智能(AI)。 客户希望应用能够利用硬件(他们已经付费!)并了解设备的外形规格,以提供适当优化的体验。
支持各种输入和交互 - 输入和交互概述
使用 Win ML 实现 AI 驱动的生产力 - Windows 机器学习简介。
使用在本地运行的 AI 模型为 Copilot+ 电脑上的 Windows 功能和 Microsoft Foundry 提供支持 - 什么是 Windows ML?
在 Windows 应用 SDK 和机器学习 (ML) 模型中使用 Windows AI API 支持的各种 AI 功能,这些模型在本地运行在 Copilot+ PC 上 - 什么是 Windows AI API?。
MSIX 应用附加和 Azure 虚拟桌面
若要使应用在企业环境中运行得最好,请添加对 MSIX 应用附加的支持。
MSIX 应用附加可让你将 MSIX 应用程序交付到物理计算机和虚拟机。 它专为 Azure 虚拟桌面 (AVD) 而设计,后者是一种在云上运行的桌面和应用虚拟化服务。 将 MSIX 应用附加与 AVD 配合使用有助于改进用户的登录时间,并能够降低企业的基础结构成本。
基于 ARM 的 Windows
Windows 可以在 ARM 设备上运行。 ARM 电脑受益于延长的电池生命以及对移动数据网络的集成支持。 这些电脑还提供出色的应用程序兼容性,让你在不进行任何修改的情况下运行现有的 x86 和 x64 应用程序。
为了获得最佳性能,你的应用可以通过构建完整的 Arm 版本或优化受益于本机性能的代码库部分来充分利用节能的 Arm 处理器体系结构。 有关这些技术的详细信息,请参阅 适用于 Arm 的 Windows 和 适用于 Arm 的 Windows 11 应用程序的 Arm64EC。
推送通知
推送通知 允许你以性能优化的方式将云服务中的信息发送到应用。 推送通知包括原始通知、锁屏提醒通知以及从云服务发送的 Toast 通知。
使用推送通知唤醒应用或客户端,而不是始终使其保持运行状态以优化用户设备上的性能。
不要使用通知通道发送广告。
尊重 retry-after 标头 – 这种做法可保护服务并确保通知传递成功。
从系统中删除已过期或吊销的通道。
Windows 通知服务 (WNS)不会处理已过期或已吊销通道的请求。
避免突然对 WNS 进行大量请求。 此模式可能导致受限制的响应。
利用 MS-CV 标头。 此标头有助于实现端到端可跟踪性和诊断。
准备一种备用机制,用于通知不起作用的情况。
使用 Azure 通知中心 (ANH)。 凭借 ANH,你可以访问参与功能,如确定受众目标、安排通知和广播通知。 如果你是目前仅限 Windows 的开发人员,则使用 ANH 使你以后可以轻松地将通知基础结构转换为其他平台。
应用程序发现和管理
可靠的安装、更新和卸载体验是一致、高质量用户体验的重要组成部分。 以下最佳做法有助于确保在用户发现和管理应用程序时留下良好的印象:
应用程序发现
在 Microsoft Store 上列出你的应用可使你的应用更易于发现。
如果跨多个通道(例如,在网站和 Microsoft 应用商店中托管应用),请在所有频道中使用一致的应用程序标识和更新机制。
通过 Microsoft Store 分发应用,让用户更容易发现应用。 请注意,Windows 用户通过 Windows 包管理器 WinGet 访问应用商店应用。 如果不发布到 Microsoft Store,仍然可以通过 WinGet 存储库使应用在 WinGet 中很容易发现。
安装和卸载
支持每用户安装。 此支持使用户能够更轻松地安装并避免 UAC 提示。
确保应用程序安装无错误、透明且对文件管理考虑周密。 应用程序安装不应保留任何临时文件。
在可行时避免要求提升的权限来安装和要求操作系统重启。
支持无提示安装。 对于企业环境中的应用可管理性,此支持非常重要。
确保应用列在 “应用 ->已安装的应用” 列表中。
请考虑使用 MSIX 来确保用户享有无缝安装、更新和卸载体验。 MSIX 会自动删除应用二进制文件和数据。 有关打包应用如何处理文件和注册表项的信息,请参阅了解打包的桌面应用如何在 Windows 上运行。
对于未打包的应用,请确保用户可以通过“设置”中的 “应用 ->已安装的应用 ”列表轻松卸载应用程序。 当用户卸载应用程序时,请确保也会删除“开始”菜单项、文件、目录、注册表项和临时文件。 请考虑让用户在卸载应用程序时可选择保留其数据。
确保应用在卸载期间会删除所有二进制文件和应用程序数据。 用户创建的内容应存储在诸如 Documents以下位置:即使在卸载应用后,用户也可以保留这些位置。
避免安装或更新可能需要重新启动的系统二进制文件。
与 RestartManager 集成,以在 OS 更新之间保存和还原状态。
更新
支持一种更新机制,允许应用在方便用户时重启。 考虑使用 Windows 应用 SDK 重启 API 来管理 WinUI 3 应用的应用行为。
确保更新机制仅下载需要更新的基本更改组件。 此方法可最大程度地减少所需的网络带宽。
提供更新和修复应用的方法。 考虑 MSIX,它会自动处理更新修复。 有关详细信息,请参阅自动更新和修复应用。
考虑基于推送通知的更新或在应用启动或重启时检查可用更新。
其他资源
MSIX 文档
Windows Installer 最佳做法
可访问性
可访问的 Windows 应用程序支持尽可能多的人的丰富 和包容性体验 。 包容性设计为所有人创造更好的产品。 若要确保应用易于使用且具包容性,请考虑改进的功能和可用性在以下情形中的意义:
残疾人士(暂时和永久)。
个人偏好。
特定工作方式。
环境约束(例如共享工作空间、驾驶、烹饪、防眩等)。
事实上,世界卫生组织并未将残疾定义为个人特征,而是将其定义为个人与其周围物理和数字世界之间不匹配的互动。
辅助功能对人员和业务均有利
辅助功能是一项责任
全世界有超过 10 亿人具有某种形式的残疾。 然而,只有10分之一的人获得充分参与我们经济和社会所需的辅助技术。 通常,残疾人的失业率是非残疾人的两倍。 残疾(无论是情况、暂时性还是永久性)随时都会影响我们中的任何一个。
辅助功能是一个机会
根据 Microsoft 辅助功能方法数据表:采用在工作场所雇用和支持残疾人的最佳做法的包容性组织表现优于同行,并能更好地吸引和留住优秀人才。 千禧一代是全球劳动力的75%,他们通常选择反映其价值观的雇主。 多样性和包容性位居榜首。
纳入辅助功能
将辅助功能纳入 Windows 应用可最大程度地提高用户参与度,提高产品满意度,并鼓励产品忠诚。 主动设计和实现可访问体验通常会长期降低开发和维护成本。
一些常见的解决方案包括以替代格式(如视频上的字幕)提供信息或启用辅助技术的使用(如屏幕阅读器)。
在设计时考虑到辅助功能的应用程序更易于维护、更新和重新设计。 除了帮助你的应用覆盖残疾人士之外,设计时将辅助功能考虑在内还可以降低维护应用的成本。
有关生成可访问 Windows 应用的详细指南,请参阅 Windows 中的辅助功能。
辅助功能测试
辅助功能见解是一套功能强大的工具,供开发人员测试其应用和服务的辅助功能。 使用以下工具来测试辅助功能:
在适用于 Windows 的辅助功能见解中检查。 检查辅助功能树以查找容易发现的问题,例如标签中的提示、角色定义错误以及其他问题。
适用于 Windows 的辅助功能见解中的事件监视 · 辅助功能见解。 有关事件监视的详细信息,请参阅支持 UI 自动化控件类型。
在 PR 或 CI/CD 中运行辅助功能见解自动检查。 有关详细信息,请参阅 axe-pipelines-samples。
修复您发现的所有错误,因为它们都直接影响到可访问性。
安全和隐私
不安全的应用程序可能是允许攻击者执行恶意活动的入口点。 即使你的应用没有安全 bug,不良参与者也可以使用你的应用通过网络钓鱼和其他违反安全和隐私边界的社会工程形式发起攻击。 本部分中的最佳做法可帮助你缓解与安全和用户隐私相关的风险。
Windows 中增强的安全功能
Windows 建立在安全和隐私的基础之上,Windows 11 设计为 Windows 的最安全版本,我们致力于帮助你构建利用 Windows 中最新安全功能的安全应用。
使用 Windows Hello 生物识别登录保护 Windows 应用和后端服务 - Windows Hello 概述。
跨在线、企业和政府应用程序及支付功能实现通行密钥登录 - 通行密钥简介。
使用数字证书对应用进行签名,以确保 智能应用控制 可以验证应用的完整性 - 代码签名简介 和 Microsoft 受信任根证书计划的要求。
安全指导原则
遵循安全开发生命周期进行所有开发。
威胁建模有助于避免安全缺陷。
使用安全库、语言和工具可最大程度减少实现缺陷。
安全默认值可以防止用户错误导致的安全问题。
无需管理权限即可安装应用。
理想情况下,应用应同时支持管理安装和每用户安装。
使用 MSIX 打包 是实现此目标的一种方法。
无需管理权限即可运行应用。
如果某些功能需要管理权限, 请考虑将它们分成 自己的进程以减少攻击面。
使用具有保证内存安全的语言,例如 C#、JavaScript 或 Rust,尤其是用于分析不受信任的数据等有风险的代码路径。
使用编译器和工具集提供的所有安全缓解措施(请参阅 Microsoft Visual C++ 中的安全功能,了解 Visual C++)。
始终将所选语言或框架的标准库用于加密和其他安全敏感型代码。
不要尝试自行构建。
对应用程序所有组件进行数字签名 – 不仅是安装程序,还有卸载程序(如有)。 此外,请对构成应用的所有 EXE、DLL 和其他可执行文件签名。
数字签名使用户能够验证应用的真实性,并支持企业管理员使用 Windows Defender 应用程序控制来保护其设备。
使用 MSIX 打包是实现此目标的一种方法。
确保所有网络通信都通过安全传输,如 SSL。
提供防护措施或其他缓解措施,帮助防止用户意外执行有害操作,即使对攻击者强制这样做的情况也适用。
简单的“是否确实要执行 X?
是/否“对话框通常无效,因为用户条件是单击”是”。
大多数新式应用都会出于各种原因收集和使用大量数据(包括个人数据)。 遥测、产品改进和盈利是使用数据的三种常见原因,但用户和监管机构对这些做法的隐私影响越来越敏感。 他们希望应用收集和使用的数据能保持透明和受掌控。 使用以下提示来帮助满足用户隐私需求。
隐私准则
隐私策略
易于发现且易于理解的隐私声明可增强用户对应用程序的信任和信心。 确保应用提供准确的隐私策略。 理想情况下,请提供为普通受众(用户)撰写的摘要文档和为律师准备的详细法律政策文件。
隐私策略必须包含以下内容:
告知用户产品访问、收集或传输的个人信息。
信息的使用、存储和保护方式。
指明会将此类信息披露给什么类型的对象。
说明用户可以对其信息的使用和共享进行哪些控制以及用户可以如何访问自己的信息。
遵守适用的法律和法规。 熟悉你的应用可用的市场中的隐私法规。 确保应用满足或超过披露、使用权限、删除请求和其他隐私问题的任何要求。
在您向产品添加新特性和功能时,请保持最新状态。
Microsoft隐私声明
数据收集
收集完成应用体验所需的最少个人数据量。
不要“以防万一”收集数据。出于收集所有数据的有效原因,例如改善客户体验或促进盈利。
在收集和存储个人数据之前,请始终获得用户的同意。 为用户提供一种简单的方法来还原其将来的决定。 避免使用“深色模式”,例如让“同意”对话框中的“是”按钮比“否”按钮更大或更突出。
咨询适用的法规,以确定指定类型的数据需要哪些特定披露和同意。 例如,某些地区可能允许用户查看、更改或删除你存储的有关他们的数据。
如果必须通过网络传输数据,请始终使用安全连接,例如通过 TLS 进行连接。
避免将个人数据存储在集中式位置,例如网站。 如果必须存储个人数据,请尽量减少存储的数据量,仅在必要时存储数据,并确保其安全加密。
验证你使用的任何第三方库或 SDK 是否也具有良好的隐私做法。 这种担忧不仅限于广告 SDK - 连接到 Internet 的任何库都可能会影响应用用户的隐私。
相关文章
创建你的第一个 WinUI 3 项目
Windows 开发人员常见问题解答