调用ReadProcessMemory访问其他进程的内存失败 进程的SE_DEBUG_NAME权限 也已经加了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CTestDlg::OnButton1() {DWORD bytes; BYTE tmpValue; m_hProcess=OpenProcess(3748);//3748是进程ID,下面那个地址是绝对可以读的。只是突然不能读了。用其它软件可以读出内容。其内存地址是有分配物理内存的提交if (ReadProcessMemory(m_hProcess,(void *)0x000E3FFB,(void *)&tmpValue,1,&bytes)==0) { int h=GetLastError(); AfxMessageBox("进程不能读"); } else { AfxMessageBox("进程可以读"); } }HANDLE CTestDlg::OpenProcess(DWORD pid){HANDLE hToken; if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) { if (EnablePrivilege(hToken, SE_DEBUG_NAME, TRUE)) { HANDLE hANDLE; if(hANDLE=::OpenProcess(PROCESS_ALL_ACCESS,false, pid)) { AfxMessageBox("进程可以打开"); return hANDLE; } AfxMessageBox("进程不能打开"); } } return NULL;}BOOL CTestDlg::EnablePrivilege(HANDLE hToken, LPCTSTR szPrivName,BOOL fEnable){ TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; LookupPrivilegeValue(NULL, szPrivName, &tp.Privileges[0].Luid); tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL); return((GetLastError() == ERROR_SUCCESS));} 用VC可以实现U盘分区和格式化吗? 把对话框类绑定Edit控件的CString类型变量赋给结构体的CString成员,程序崩溃。 图形控件如何与类绑定 ODBC API查询效率问题 国外不断推出先进的开发工具其主要目的之一就是让他国使用者逐渐远离底层技术而让他们不自觉地、情愿地永远被自己牵着鼻子走! 为什么在VC7中include一个头文件会出现错误?? 用API进行打印,请高手看看以下代码,高分相送 字符串截取的问题,急! 在发行带有使用ADO接口连接数据库的COM组件的应用程序中,还需要打包哪些文件? ATL的疑问? 求助:怎样读取24位位图数据 关于实时监测 进程状态的问题
{
DWORD bytes;
BYTE tmpValue;
m_hProcess=OpenProcess(3748);//3748是进程ID,下面那个地址是绝对可以读的。只是突然不能读了。用其它软件可以读出内容。其内存地址是有分配物理内存的提交
if (ReadProcessMemory(m_hProcess,(void *)0x000E3FFB,(void *)&tmpValue,1,&bytes)==0)
{
int h=GetLastError();
AfxMessageBox("进程不能读"); }
else
{
AfxMessageBox("进程可以读");
}
}
HANDLE CTestDlg::OpenProcess(DWORD pid)
{
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES, &hToken))
{
if (EnablePrivilege(hToken, SE_DEBUG_NAME, TRUE))
{
HANDLE hANDLE;
if(hANDLE=::OpenProcess(PROCESS_ALL_ACCESS,false, pid))
{
AfxMessageBox("进程可以打开");
return hANDLE;
}
AfxMessageBox("进程不能打开");
}
}
return NULL;
}
BOOL CTestDlg::EnablePrivilege(HANDLE hToken, LPCTSTR szPrivName,BOOL fEnable)
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL, szPrivName, &tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
return((GetLastError() == ERROR_SUCCESS));
}