對於程序提公升許可權主要用到下面三個api
openprocesstoken();開啟許可權令牌
lookupprivilegevalue();檢索乙個唯一的本地識別符號 luid
adjusttokenprivileges();調整令牌特權
bool openprocesstoken(
handle processhandle, //要修改訪問許可權的程序控制代碼
dword desiredaccess, //指定你要進行的操作型別
phandle tokenhandle //返回的訪問令牌指標
);bool lookupprivilegevalue(
lpctstr lpsystemname, //
表示所要檢視的系統,本地系統直接用null
lpctstr lpname, //
表示所要檢視的特權資訊的名稱
pluid lpluid //
接收所返回的制定特權名稱的資訊);
luid是用來填充如下結構體的
typedef struct _token_privileges token_privileges, *ptoken
bool adjusttokenprivileges(
handletokenhandle,//包含特權的控制代碼
booldisableallprivileges,//禁用所有許可權標誌
ptoken_privilegesnewstate,//新特權資訊的指標(結構體)
dwordbufferlength,//緩衝資料大小,以位元組為單位的previousstate的快取區(sizeof)
ptoken_privilegespreviousstate,//接收被改變特權當前狀態的buffer
pdwordreturnlength //接收previousstate快取區要求的大小
);
看**:
handle tokenhandle;
if(!openprocesstoken(getcurrentprocess(), token_adjust_privileges | token_query, &tokenhandle))
token_privileges t_privileges = ;
if(!lookupprivilegevalue(null, se_shutdown_name, &t_privileges.privileges[0].luid))
t_privileges.privilegecount = 1;
t_privileges.privileges[0].attributes = se_privilege_enabled;
if(!adjusttokenprivileges(tokenhandle, false, &t_privileges, sizeof(token_privileges), null, null))
reparent指定程序到當前程序
作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...
reparent指定程序到當前程序
作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...
獲得當前程序名
用快照取得當前的程序名,下面是測試小例子。include 需要匯入tlhelp32.h moduleentry32 mcurprocessmodule32 mcurprocessmodule32.dwsize sizeof moduleentry32 最好手動初始化,因為會取前4位元組作為長度。ha...