请教一个很菜的小问题,本人新手
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()那么这个函数 就不执行,什么原因呢?