社区
进程/线程/DLL
帖子详情
怎样判断当前进程是否系统进程?
Garfield
2004-10-11 11:39:42
如题
...全文
295
4
打赏
收藏
怎样判断当前进程是否系统进程?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DentistryDoctor
2004-10-11
打赏
举报
回复
TCHAR User[UNLEN + 1];
TCHAR Domain[DNLEN + 1];
DWORD cchUser;
DWORD cchDomain;
LPTSTR UserName = User;
LPDWORD cchUserName = &cchUser;
LPTSTR DomainName = Domain;
LPDWORD cchDomainName = &cchDomain;
HANDLE hToken = NULL;
#define MY_BUFSIZE 512 // 定义最大缓冲长度
UCHAR InfoBuffer[ MY_BUFSIZE ];
DWORD cbInfoBuffer = MY_BUFSIZE;
SID_NAME_USE snu;
BOOL bSuccess;
BOOL bRet = FALSE;
if(!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken )) {
cout<<"!OpenProcessToken(GetCurrentProcess()"<<endl;
return -1;
}
bSuccess = GetTokenInformation(hToken, TokenUser, InfoBuffer, cbInfoBuffer, &cbInfoBuffer);
if(!bSuccess) {
cout<<"GetTokenInformation failed"<<endl;
return -1;
}
else {
// 控制台程序中该函数调用总是失败???
bRet = LookupAccountSid(NULL, ((PTOKEN_USER)InfoBuffer)->User.Sid, UserName, cchUserName, DomainName, cchDomainName, &snu );
if (!bRet) {
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 默认语言
(LPTSTR) &lpMsgBuf,
0,
NULL
);
TCHAR temp[80];
sprintf(temp,"出错信息 GetLastError() = %d",GetLastError());
// 显示 lpMsgBuf 缓冲中的信息.
// ...
MessageBox( NULL, (LPCTSTR)lpMsgBuf, temp, MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
cout<<"LookupAccountSid failed"<<endl;
CloseHandle(hToken);
return -1;
}
else {
cout << DomainName << "\n" << UserName << endl;
}
}
DentistryDoctor
2004-10-11
打赏
举报
回复
OpenProcessTocken to get username
NT AUTHORITY\SYSTEM,NT AUTHORITY\NETWORK SERVICE,NT AUTHORITY\LOCAL SERVICE为系统进程?
bianliuwei
2004-10-11
打赏
举报
回复
关注
薛定谔之死猫
2004-10-11
打赏
举报
回复
关注
taskmgr.exe下载
好不容易找到的,如果任务管理器打不开就用这个吧,解压后把taskkill.exe、tasklist.exe及taskmgr.exe三个文件复制到C:\WINDOWS\system32就可以了
Windows 小记 1 --
判断
系统
进程
4)对于 LOCAL SERVICE 和 NETWORK SERVICE 的
进程
,一般是 svchost.exe
进程
,他是一个容器
进程
,需要获取其服务信息或者装载的模块信息(模块才是真正的判定指标)2)枚举
进程
的会话号,会话号为 0 的可能为
系统
进程
(这包括了所有 SYSTEM 用户组、LOCAL SERVICE 和 NETWORK SERVICE 的
进程
)。P.S:为什么需要第3,4步?因为会话在 0 的
进程
不一定是
系统
进程
,第三方
进程
也可以在会话 0 创建
进程
,并且也可以位于 SYSTEM 用户组。
c++中如何
判断
该
进程
是
系统
进程
,还是用户
进程
有那位高手给指点一下:c++中如何
判断
该
进程
是
系统
进程
,还是用户
进程
如何
判断
子
进程
和父
进程
区分父
进程
和子
进程
判断
子
进程
和父
进程
可以使用**fork()**函数: 所需头文件: #include<sys/types.h> #include<unistd.h> 返回值: 0:子
进程
>0: 父
进程
,返回值为创造出的子
进程
的PID -1:出错 pid_t pid; pid = fork();//获得fork()的返回值,根据返回值
判断
父
进程
/子
进程
if(pid==-1)//若返回值为-1,表示创建子
进程
失败 {
如何
判断
当前
的
进程
是否
以root权限运行?
当前
登录
系统
的用户叫做实际用户,而实际运行的
进程
是以有效用户ID来进行访问权限管理的,正常情况下有效用户就是实际用户,但是如果我们使用了sudo或者使能了设置用户ID位, 按照前面文章的介绍,这个有效用户是可能改变的,比如使用sudo执行,
进程
的有效用户ID就会变为root,那么此
进程
就相当于具有了root权限。如果我们的程序只允许使用root运行,那么该如何设计呢? C语言程序设计 #inclu...
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章