社区
进程/线程/DLL
帖子详情
怎么使系统服务进程无法停止?
CBuilderflying
2004-07-31 01:52:18
怎么使系统服务进程无法终止?就像某些Windows系统进程那样,或者显示“无法完成操作 禁止访问”
还有就是如何编程设置系统服务的之间的依存关系,比如要关闭Server进程必须要同时关闭Computer Browser进程...
...全文
462
13
打赏
收藏
怎么使系统服务进程无法停止?
怎么使系统服务进程无法终止?就像某些Windows系统进程那样,或者显示“无法完成操作 禁止访问” 还有就是如何编程设置系统服务的之间的依存关系,比如要关闭Server进程必须要同时关闭Computer Browser进程...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhoujiamurong
2004-09-27
打赏
举报
回复
怎么建工程放test1 和test2
zhoujiamurong
2004-09-27
打赏
举报
回复
mark
九重霄
2004-09-10
打赏
举报
回复
gz
toxyboy
2004-08-03
打赏
举报
回复
Mark
bx2000
2004-08-03
打赏
举报
回复
做成驱动模式的就可以了
Kudeet
2004-08-02
打赏
举报
回复
转自老侃第一站:
怎么做一个WinNT下无法终止的进程呢?相信有很多人会说做成服务,这样就不能被任务管理器杀死了。真的吗?不一定,普通的服务也还是能够被任务管理器杀死的,但的确在杀有些服务的时候会提示“为系统关键进程,无法停止”。系统关键进程怎么做?不会了吧,呵呵,我也不会。
我这里讲的方法实际上是不能终止的两个进程。讲到这里相信很多人都明白了,就是两个进程相互监视,一旦发现对方被杀就立刻重启对方。这样,这两个进程就很难被杀死了,至少我认为用任务管理器是不可能杀死它们的。
我的例子中,每个进程建立一个线程专门用于监视,这样主线程还可以做其他的事情。另外,注意那个互斥对象的使用。当然,这个程序可能写的不是很完美。
//test1.cpp
#include <windows.h>
DWORD WINAPI ThreadCheckProc(LPVOID lParam)
{
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi={0};
HANDLE hMutex;
char *pName=(char *)lParam;
while(true)
{
hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,pName);
if(!hMutex)
{
CreateProcess(pName,
NULL,
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ); // Pointer to PROCESS_INFORMATION structure.
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
else
{
CloseHandle(hMutex);
}
Sleep(1);
}
}
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
DWORD ThreadId;
CreateMutex(NULL,TRUE,"test1.exe");
CreateThread(NULL,0,ThreadCheckProc,(LPVOID *)"test2.exe",0,&ThreadId);
while(1)
{
Sleep(1000);
}
return 0;
}
//test2.cpp
#include <windows.h>
DWORD WINAPI ThreadCheckProc(LPVOID lParam)
{
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi={0};
HANDLE hMutex;
char *pName=(char *)lParam;
while(true)
{
hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,pName);
if(!hMutex)
{
CreateProcess(pName,
NULL,
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ); // Pointer to PROCESS_INFORMATION structure.
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
else
{
CloseHandle(hMutex);
}
Sleep(1);
}
}
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
DWORD ThreadId;
CreateMutex(NULL,TRUE,"test2.exe");
CreateThread(NULL,0,ThreadCheckProc,(LPVOID *)"test1.exe",0,&ThreadId);
while(1)
{
Sleep(1000);
}
return 0;
}
NowCan
2004-08-02
打赏
举报
回复
可能是SetServiceStatus函数实现的。
试试看,我没有用过。
huiker
2004-08-01
打赏
举报
回复
up
StarsWu
2004-08-01
打赏
举报
回复
system idle process不是真正的进程,只是用来表示空闲CPU时间的代替进程.
tabris17
2004-08-01
打赏
举报
回复
谁说"没有绝对结束不了的进程"的?
system idle process就是不能结束的
howtotell
2004-07-31
打赏
举报
回复
没有绝对结束不了的进程.只能是windows自带的进程管理器结束不了而已.通过把自己编写的程序提升到SE_PRIVILEGE_ENABLED权限,然后利用TerminateProcess(OpenProcess(PROCESS_TERMINATE ,FALSE,进程号,0);连0号进程都可以结束(结果是蓝屏而已).
tabris17
2004-07-31
打赏
举报
回复
只要编写的服务程序不响应SERVICE_CONTROL_STOP就可以了
huiker
2004-07-31
打赏
举报
回复
关注
android双
进程
守护,
进程
很难被杀死demo
android双
进程
守护,
进程
很难被杀死
taskmgr.exe下载
好不容易找到的,如果任务管理器打不开就用这个吧,解压后把taskkill.exe、tasklist.exe及taskmgr.exe三个文件复制到C:\WINDOWS\system32就可以了
Linux
系统
进程
类型有哪些?
进程
状态有哪几种?常见的
进程
有哪些?
一.linux
系统
进程
类型有 :交互
进程
;批处理
进程
;监控
进程
(守护
进程
); 交互
进程
:由一个shell启动的
进程
。交互
进程
既可以在前台运行,也可以在后台运行。批处理
进程
:这种
进程
和终端没有联系,是一个
进程
序列。监控
进程
(也称守护
进程
):Linux
系统
启动时启动的
进程
,并在后台运行。 二.
进程
状态有: linux上
进程
有5种状态: 1. 运行(正在运行或在运行队列中等待) ......
linux
服务
进程
突然
停止
测试环境运行的
服务
突然挂了,日志里面也没显示任何异样,查看机器的磁盘和内存也是正常的,于是便排查是否是
进程
数满了。/var/log/messages(不同的日志
系统
可能日志文件不同,可能是syslog)其中max user processes
系统
限制某用户下最多可以运行多少
进程
或线程。使用ps -eLf | wc -l 查看
服务
器所用线程数,发现远达不到最大限制。发现并未达到最大
进程
,于是便想到查看linux日志去定位问题。发现那个时间点确实有杀死
进程
的行为。执行命令:ulimit -a。
linux
进程
有哪几种类型,Linux
系统
进程
类型有哪些?
进程
状态有哪几种?常见的
进程
有哪些?...
一.linux
系统
进程
类型有 :交互
进程
;批处理
进程
;监控
进程
(守护
进程
);交互
进程
:由一个shell启动的
进程
。交互
进程
既可以在前台运行,也可以在后台运行。批处理
进程
:这种
进程
和终端没有联系,是一个
进程
序列。监控
进程
(也称守护
进程
):Linux
系统
启动时启动的
进程
,并在后台运行。二.
进程
状态有:linux上
进程
有5种状态:1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, ...
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章