自动关机的几行代码,问GetCurrentProcess()的意义。

Xiaodongling 2004-04-29 09:19:44
下面是一个菜单项的响应函数,执行后可以关机。
请问:OpenProcessToken()函数的第一个参数GetCurrentProcess()是用来干什么的?有什么作用?



int result=MessageBox("确定要关机吗?","关机程 序",MB_OKCANCEL|MB_ICONWARNING);
if(result==IDOK)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess (),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
return;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,NULL,NULL,NULL);
ExitWindowsEx((EWX_SHUTDOWN|EWX_POWEROFF),0);
}
...全文
264 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengyunfei 2004-04-30
  • 打赏
  • 举报
回复
看msdn啊
极速小王子 2004-04-30
  • 打赏
  • 举报
回复
不知道,猜测可能是获取当前进程的句柄
yueshujiang 2004-04-30
  • 打赏
  • 举报
回复
www.pcvc.net
www.vckbase.com
www.vchelp.net
暗黑帝国 2004-04-30
  • 打赏
  • 举报
回复
yes
Xiaodongling 2004-04-30
  • 打赏
  • 举报
回复
可否这样解释:GetCurrentProcess()是为了获得当前进程的句柄,然后通过AdjustTokenPribileges()来提升当前进程的权限。当执行函数ExitWindowsEx() 后,此函数送一个关机消息给当前进程,由于当前进程的权限已经提升,它拥有关机的权限,所以可以关机了。
Xiaodongling 2004-04-30
  • 打赏
  • 举报
回复
请问一下:执行函数ExitWindowsEx()是不是意味着当前进程是“想关机”?我的意思是说:
一定要提升当前进程的权限吗?提升以前进程的权限不行吗?能否打个比方,我是新手。^_^
taianmonkey 2004-04-30
  • 打赏
  • 举报
回复
GetCurrentProcess()得到当前进程的句柄,你要对你当前的进程提升权限,他才能实现关机的操作!
ringphone 2004-04-30
  • 打赏
  • 举报
回复
在NT,W2K下是需要权限才能关机的,GetCurrentProcess()得到当前进程的句柄,提升该进程级别以获得关机权限。如果你是以管理员权限运行该程序,这些代码可以不要,但其他身份的用户登陆运行,就要这么做了。
madhappy 2004-04-30
  • 打赏
  • 举报
回复
你要让系统提高你的级别
总要告诉他你的进程是谁吧?

madhappy 2004-04-30
  • 打赏
  • 举报
回复
GetCurrentProcess()

得到当前进程的句柄
fbmsf 2004-04-30
  • 打赏
  • 举报
回复
因为OpenProcessToken需要一个句柄,,而你要调阵当前进程的级别,所以就要当前进程的句柄了。
Xiaodongling 2004-04-30
  • 打赏
  • 举报
回复
GetCurrentProcess()当然是获取当前进程的句柄,我是问它在这个代码里面有什么用,哪位高人能够具体说说所以然?多谢了。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧