windows 如何强杀其他用户进程

    管理员权限kill当前windows账号可以,kill其他用户下启动的进程会失败。kill进程需要开启SE_DEBUG_NAME权限。

     调试权限允许某人调试他们本来无权访问的进程。 例如,在其令牌上启用了调试权限的用户身份运行的进程可以调试作为本地系统运行的服务。

    调试权限是一种安全策略设置,允许用户将调试器附加到进程或内核。 管理员可以修改用户组的安全策略,以包括或删除此功能。 调试自己的应用程序的开发人员不需要此用户权限。 正在调试系统组件或正在调试远程组件的开发人员将需要此用户权限。 此用户特权提供对敏感和关键操作系统组件的完全访问。 默认情况下,为具有管理员权限的用户启用此属性。 具有管理员权限的用户可以为其他用户组启用此属性。

一、修改进程的调试权限

 下面的代码示例演示如何在进程中启用调试权限。 这使你能够调试你无权访问的其他进程。

//
//  SetPrivilege enables/disables process token privilege.
//
BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
    LUID luid;
    BOOL bRet=FALSE;

    if (LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
    {
        TOKEN_PRIVILEGES tp;

        tp.PrivilegeCount=1;
        tp.Privileges[0].Luid=luid;
        tp.Privileges[0].Attributes=(bEnablePrivilege) ? SE_PRIVILEGE_ENABLED: 0;
        //
        //  Enable the privilege or disable all privileges.
        //
        if (AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL))
        {
            //
            //  Check to see if you have proper access.
            //  You may get "ERROR_NOT_ALL_ASSIGNED".
            //
            bRet=(GetLastError() == ERROR_SUCCESS);
        }
    }
    return bRet;
}


以下示例演示如何使用此函数:

HANDLE hProcess=GetCurrentProcess(); //传入要kill进程句柄
HANDLE hToken;

if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken))
{
    SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
    CloseHandle(hToken);
}

二、看下杀毒软件和任务管理器开启debug权限截图:

其实他们之所以可以强制kill掉其他用户进程也是开启了SE_PRIVILEGE_ENABLED权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值