/// <summary>
/// 提升进程权限
/// </summary>
/// <param name="Privilege">所需要的权限名称,可以到MSDN查找关于Process Token & Privilege内容可以查到</param>
/// <param name="Enable">如果为True 就是打开相应权限,如果为False 则是关闭相应权限</param>
/// <param name="CurrentThread">如果为True 则仅提升当前线程权限,否则提升整个进程的权限</param>
/// <param name="Enabled">输出原来相应权限的状态(打开 | 关闭)</param>
/// <returns></returns>
[DllImport("ntdll.dll")]
public static extern int RtlAdjustPrivilege(string Privilege, bool Enable, bool CurrentThread, int Enabled);这个API可以提权还有
GetCurrentProcessID 得到当前进程的ID
OpenProcessToken 得到进程的令牌句柄
LookupPrivilegue 查询进程的权限
AdjustTokenPrivileges 判断令牌权限 希望来个大神帮忙 用C#提升进程权限
/// <summary>
/// 根据进程名称获取进程
/// </summary>
/// <param name="ProcessName">进程名称</param>
/// <returns></returns>
public Process GetProcessByName(string ProcessName)
{
Process[] pname = Process.GetProcesses(); //取得所有进程
foreach (Process name in pname) //遍历进程
{
if (name.ProcessName.ToLower().IndexOf(ProcessName) != -1) //如果查找到进程名称 返回
return name;
}
return null;
} Process processName = GetProcessByName("");假设我已经获得了进程 下面如何写呢?
OpenProcessToken 得到进程的令牌句柄,在这个方法里头要先查询到进程的LUID,要利用到第三个API函数LookupPrivilegevalue
然后用AdjustTokenPrivileges 调整令牌权限如果进程权限一开始就是Enable的,可以直接用OpenProcess(PROCESS_ALL_ACCESS,FALSE, dwProcessID)来指定访问权限
参考http://topic.csdn.net/u/20110419/11/19eb4ddc-6f07-42ef-9de5-ce40c65f77b5.html?2294