请教一个很菜的小问题,本人新手

sike200008 2010-08-17 07:40:16
void KillProgram(LPCSTR ExeName)
{
LPCSTR File=NULL;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
File=pe32.szExeFile;
if(strcmp(File,ExeName)==0)
{
TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS,0,pe32.th32ProcessID),0);
break;
}
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseHandle(hProcessSnap);
}
//提权函数
void level()
{
TOKEN_PRIVILEGES tkp; //修改权限
HANDLE hToken; //句柄
//TOKEN_ADJUST_PRIVILEGES当前进程访问令牌的句柄
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)) //提权操作
AfxMessageBox(_T("获取进程句柄失败!"));
//LookupPrivilegeValue获得luid的值
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid); //获得本地唯一标识
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);//调整获得的权限
CloseHandle(hToken); //关闭这个句柄

}

void CKillDlg::OnBnClickedkill()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE); //把控件的值 赋给变量
void level(); //提权
KillProgram(IDC_Name);
}
我定义了两个方法, 如果我直接使用level(); 就好使
但是我加上void 使用void level()那么这个函数 就不执行,什么原因呢?
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-08-17
  • 打赏
  • 举报
回复
void level(); //提权
你这里是函数申明,不是函数调用
grf9527 2010-08-17
  • 打赏
  • 举报
回复
楼上的解释是正解,要严格按照语法写代码。要不编译器通过了,执行也会出问题,这个逻辑本身不是你期望的。
guoxuqu 2010-08-17
  • 打赏
  • 举报
回复
void level();是函数声明,当然不会调用。
oysoft 2010-08-17
  • 打赏
  • 举报
回复
void level()算是什么用法呀,C、C++中没有这样的函数调用方法

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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