- 创建一个ASP.NET Core Web API项目
- 给解决方案设置一个名称
- 选择一个目标框架,这里选择的是 .NET 8.0框架
- 在Porperties文件夹中添加一个app.manifest文件
- 设置app.manifest文件属性,生成操作设置为嵌入的资源
双击解决方案名称,编辑WebApplication22.csproj文件,在.csproj文件中加入一行代码
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
.csproj配置文件如下
<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net8.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings><ApplicationManifest>Properties\app.manifest</ApplicationManifest></PropertyGroup><ItemGroup><EmbeddedResource Include="Properties\app.manifest" /></ItemGroup><ItemGroup><PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /></ItemGroup>
</Project>
app.manifest文件配置如下
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"><assemblyIdentity version="1.0.0.0" name="MyApplication.app" /><trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"><security><requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /></requestedPrivileges><applicationRequestMinimum><defaultAssemblyRequest permissionSetReference="Custom" /><PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" /></applicationRequestMinimum></security></trustInfo><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application></application></compatibility>
</assembly>
需要注意的是,需要把requestedExecutionLevel节点中的level值设置为“requireAdministrator”
- 此时重新生成解决方案发现我们的exe程序就会有一个盾牌的标识,说明是成功设置为了管理员身份启动。
- 另外我们可以在Program.cs文件中的Main方法中加入如下代码,用于判断程序是否以管理员身份运行:
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
if (principal.IsInRole(WindowsBuiltInRole.Administrator)) //必须是管理员身份运行
{//CreateHostBuilder(args).Build().Run();
}
附:
参考网址【搞懂.NET应用程序管理员权限:三种简单方法一网打尽_net 权限管理-CSDN博客】