前言
有一次我在 .NET 8 中做了一个 WPF 项目,并把它打包发给了客户。客户安装后跟我反馈,说打开程序时直接闪退。我检查了一下,发现问题是程序在启动时需要写入配置文件,因为它被安装在 C 盘(系统盘),没有足够的权限进行文件写入,所以导致出现这个问题
一、解决办法:使用 app.manifest 请求管理员权限
最直接的解决办法是让程序请求管理员权限,这样它就可以修改 C 盘上的文件了。但每次启动程序时都会弹框 需要用户同意提示
1.添加 app.manifest 文件
右键点击项目 > 添加 > 新建项,然后选择 应用程序清单文件(app.manifest),点击 添加
2.修改文件权限要求
打开 app.manifest 文件
level=“asInvoker” 意味着程序会使用当前用户的权限来运行,也就是默认的权限
如果我们想要程序在启动时请求管理员权限,可以改成level=“requireAdministrator”
这样一来,每次启动打开程序时,Windows 就会提示用户“是否允许该应用以管理员身份运行”,从而让程序有权限写入配置文件