社区
进程/线程/DLL
帖子详情
怎么使系统服务进程无法停止?
CBuilderflying
2004-07-31 01:52:18
怎么使系统服务进程无法终止?就像某些Windows系统进程那样,或者显示“无法完成操作 禁止访问”
还有就是如何编程设置系统服务的之间的依存关系,比如要关闭Server进程必须要同时关闭Computer Browser进程...
...全文
484
13
打赏
收藏
怎么使系统服务进程无法停止?
怎么使系统服务进程无法终止?就像某些Windows系统进程那样,或者显示“无法完成操作 禁止访问” 还有就是如何编程设置系统服务的之间的依存关系,比如要关闭Server进程必须要同时关闭Computer Browser进程...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
关注
linux
系统
中tomcat使用shutdown.sh
无法
停止
服务
器
进程
本文介绍了一种解决Linux
系统
中Tomcat应用
服务
器
无法
通过shutdown.sh脚本正常关闭的方法。通过修改catalina.sh及shutdown.sh脚本,确保能够强制
停止
Tomcat
进程
。
Linux 中
停止
Docker
服务
报 warning 导致
无法
彻底
停止
问题如何解决?
在 Linux
系统
中,
停止
Docker
服务
时可能因
系统
资源、依赖关系或
服务
管理工具问题出现警告,导致
无法
彻底
停止
。文章给出解决办法,包括用
系统
管理工具
停止
、强制
停止
进程
、检查
系统
资源和依赖关系,以及重置 Docker 环境等步骤。
无法
停止
dhcp 位于本地计算机,win7
系统
开启
服务
提示“错误1067
进程
意外终止”如何解决...
当Win7用户尝试启动'wirelesspandhcpserver'
服务
时遇到错误1067,这通常与INTEL无线网卡有关。按照以下步骤可以解决此问题:1.进入网络属性,更改适配器设置;2.选择正在使用的本地连接,设置其属性;3.在共享选项卡中启用所有
服务
;4.通过管理界面启动'wirelesspandhcpserver'
服务
,将其启动类型设为自动。
无法
停止
hadoop集群(stop-all.sh)
本文详细解析了在尝试
停止
Hadoop集群时遇到的问题,即使用stop-all.sh脚本
无法
正常
停止
服务
,尽管通过jps命令确认
服务
已运行。文章揭示了问题根源在于Linux
系统
定期清理/tmp目录下保存的
进程
PID文件,导致Hadoop
无法
识别待
停止
的
进程
。并提供了解决方案,包括手动杀死
进程
和修改配置文件以避免未来发生类似问题。
java 守护
进程
linux_使用启动
停止
守护
进程
无法
停止
Linux中的Java
服务
这篇博客讲述了作者在Ubuntu Linux
系统
中遇到的一个问题,即一个Java守护
进程
无法
通过startstopdaemon命令正常
停止
。问题涉及到的脚本中包含了启动和
停止
服务
的函数,并指定了PID文件路径,但启动过程中PID文件并未按预期写入,导致
停止
服务
时出错。作者寻求解决方案。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章