在Windows操作系统中,Appinfo服务是一项系统服务,该服务在本地服务账户下运行。当需要在系统中创建提升的进程时,Appinfo服务会利用Windows安全机制来获取管理员权限。
下面是一个C#示例代码片段,演示如何利用Appinfo服务创建提升的进程:
using System.Diagnostics;
using System.Security.Principal;
public static void RunElevatedProcess(string fileName)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo(fileName);
processStartInfo.UseShellExecute = true;
processStartInfo.Verb = "runas";
var principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = principal.IsInRole(WindowsBuiltInRole.Administrator);
if (!hasAdministrativeRight)
{
processStartInfo.Arguments = string.Join(' ', args);
processStartInfo.Arguments = "\"" + processStartInfo.FileName + "\"" + ((string.IsNullOrEmpty(processStartInfo.Arguments)) ? "" : " " + processStartInfo.Arguments);
processStartInfo.FileName = "Appinfo";
processStartInfo.Verb = null;
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();
}
else
{
Process.Start(processStartInfo);
}
}
该代码会创建一个新的进程来启动在fileName中指定的应用程序或进程。如果当前用户不具备管理员权限,就会利用Appinfo服务来创建新进程并获取管理员权限,从而创建提升的进程。如果当前用户已经具备管理员权限,代码将直接使用Process.Start方法创建一个新进程并启动fileName中指定的应用程序或进程。