首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

OpenProcess老是返回NULL

2012-12-31 
OpenProcess总是返回NULL在VS2008下面,DWORD pIDGetProcessID(QQ.exe)HANDLE hProcess::OpenProcess(

OpenProcess总是返回NULL
在VS2008下面,
DWORD pID=GetProcessID("QQ.exe");
HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS, TRUE, pID);
if (NULL == hProcess)
{
cout<<"Error :"<<GetLastError()<<endl;

}
TerminateProcess(hProcess, 0);

结果发现,Error 的值是5。根本执行不到TerminateProcess这个语句,,,这是怎么回事??
[解决办法]


谁知道以后微软会不会把这些东西搞的再bt点OpenProcess老是返回NULL


#define PROCESS_TERMINATE                  (0x0001)
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED 
[解决办法]
 SYNCHRONIZE 
[解决办法]
 \
                                   0xFFFF)
#else
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED 
[解决办法]
 SYNCHRONIZE 
[解决办法]
 \
                                   0xFFF)
#endif

[解决办法]
5:
拒绝访问。 
[解决办法]
提升权限试一下!

/******************************************************\

功能描述:调整进程的权限

参数说明:

1.PrivilegeName:要调整权限的名字。

\******************************************************/

bool WINAPI EnablePrivilege(PCHAR PrivilegeName)

{

HANDLE hProc,hToken;

TOKEN_PRIVILEGES TP;

//获得进程句柄

hProc=GetCurrentProcess();

//打开进程令牌环

if(!OpenProcessToken(hProc,TOKEN_ADJUST_PRIVILEGES
[解决办法]
TOKEN_QUERY,&hToken))

{

return false;

}

//获得进程本地唯一ID

if(!LookupPrivilegeValue(NULL,PrivilegeName,&TP.Privileges[0].Luid))

{

CloseHandle(hToken);

return false;

}

TP.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;

TP.PrivilegeCount=1;

//调整权限

if(!AdjustTokenPrivileges(hToken,false,&TP,sizeof(TP),0,0))

{

CloseHandle(hToken);

return false;

}

CloseHandle(hToken);

return true;

}

//---------------------------------------




[解决办法]
给你的程序提升一下档次
void AdjustPrivilege()
{

HANDLE hToken;

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
MessageBox(NULL,TEXT("NO"),TEXT(""),0);
}
LUID myLUID;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME, &myLUID);
TOKEN_PRIVILEGES tp={sizeof(tp)};
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=myLUID;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if(AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL))
{
/*MessageBox(NULL,TEXT("权限提升成功"),TEXT(""),0);*/
}
}

热点排行