XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
using System.Diagnostics;
using System.Runtime.Versioning;
using System.Security.Principal;
using XFEExtension.NetCore.Exceptions;
namespace XFEExtension.NetCore.PermissionExtension;
#if WINDOWS
/// <summary>
/// UAC权限(管理员权限)
/// </summary>
[SupportedOSPlatform("windows")]
public static class AdministratorPermission
{
/// <summary>
/// 当前请求的状态
/// </summary>
public static CurrentPermissionState PermissionState { get; private set; }
/// <summary>
/// 当前是否以管理员身份运行
/// </summary>
/// <returns></returns>
public static bool IsAdministrator()
{
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
/// <summary>
/// 请求管理员权限并重启程序
/// </summary>
public static void GetPermissionAndReboot()
{
try
{
var startInfo = new ProcessStartInfo
{
UseShellExecute = true,
WorkingDirectory = Environment.CurrentDirectory,
FileName = Environment.ProcessPath,
Verb = "runas" // 使用UAC权限提升
};
Process.Start(startInfo);
Environment.Exit(0);
}
catch (Exception ex)
{
PermissionState = CurrentPermissionState.PermissionDenied;
throw new XFEExtensionException("无法获取管理员权限", ex);
}
}
static AdministratorPermission()
{
var isAdmin = IsAdministrator();
PermissionState = isAdmin ? CurrentPermissionState.Administration : CurrentPermissionState.Normal;
}
}
#endif
using System.Diagnostics;
using System.Runtime.Versioning;
using System.Security.Principal;
using XFEExtension.NetCore.Exceptions;
namespace XFEExtension.NetCore.PermissionExtension;
#if WINDOWS
/// <summary>
/// UAC权限(管理员权限)
/// </summary>
[SupportedOSPlatform("windows")]
public static class AdministratorPermission
{
/// <summary>
/// 当前请求的状态
/// </summary>
public static CurrentPermissionState PermissionState { get; private set; }
/// <summary>
/// 当前是否以管理员身份运行
/// </summary>
/// <returns></returns>
public static bool IsAdministrator()
{
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
/// <summary>
/// 请求管理员权限并重启程序
/// </summary>
public static void GetPermissionAndReboot()
{
try
{
var startInfo = new ProcessStartInfo
{
UseShellExecute = true,
WorkingDirectory = Environment.CurrentDirectory,
FileName = Environment.ProcessPath,
Verb = "runas" // 使用UAC权限提升
};
Process.Start(startInfo);
Environment.Exit(0);
}
catch (Exception ex)
{
PermissionState = CurrentPermissionState.PermissionDenied;
throw new XFEExtensionException("无法获取管理员权限", ex);
}
}
static AdministratorPermission()
{
var isAdmin = IsAdministrator();
PermissionState = isAdmin ? CurrentPermissionState.Administration : CurrentPermissionState.Normal;
}
}
#endif