如何隐藏程序的运行

隐藏一个程序的运行最简单的方法是将窗体的Visible设为False。但是只要用Ctrl+Alt+Del将程序列表呼出就完全露馅了。那么怎样彻底隐藏正在运行的程序呢?其实很简单。
我们知道,后台运行的程序有很多。但是只有一部分出现在程序列表里,多数系统程序并不出现。实际上,被注册成为“服务器”的进程不会出现在程序列表里。
所用API函数:热点网络
Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
这个函数可以获得当前进程一个唯一的标识符。
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
这个函数可以将进程 ID 号为dwProcessID的进程注册或取消注册为“服务器”。
所用常量:
这里的常量也就是dwType的值。
Const RSP_SIMPLE_SERVICE = 1
注册为“服务器”。
Const RSP_UNREGISTER_SERVICE = 0
取消“服务器”注册。
程序:
Public Sub MakeMeService()
Dim pid As Long, reserv As Long
'获取当前进程ID
pid = GetCurrentProcessId()
'注册为服务器
regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub
Public Sub UnMakeMeService()
Dim pid As Long, reserv As Long
'获取当前进程ID
pid = GetCurrentProcessId()
'取消服务器注册 热点网络
regserv = RegisterServiceProcess(pid, RSP_UNREGISTER_SERVICE)
End Sub
不过用这种方法也不能保证程序运行时不被查到,如用 程序猎手 就可以查出来。

(0)

相关推荐

  • 如何隐藏程序的运行

    隐藏一个程序的运行最简单的方法是将窗体的Visible设为False.但是只要用Ctrl+Alt+Del将程序列表呼出就完全露馅了.那么怎样彻底隐藏正在运行的程序呢?其实很简单.我们知道,后台运行的程序有很多.但是只有一部分出现在程序列表里,多数系统程序并不出现.实际上,被注册成为"服务器"的进程不会出现在程序列表里.所用API函数:热点网络 Private Declare Function GetCurrentProcessId Lib "kernel32" Al

  • WinForm防止程序重复运行的方法分析

    本文实例讲述了WinForm防止程序重复运行的方法.分享给大家供大家参考,具体如下: 需求: 1.点击"关闭"按钮时,程序最小化到托盘,并没有退出,这时再次运行程序,不会重复运行,而是显示已运行的程序: 2.支持不同目录: 3.支持修改名称. 代码(不支持修改名称,不支持不同目录): using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text;

  • Windows程序内部运行机制实例详解

    本文以孙鑫老师VC++教程中的程序为基础,详细讲解了Windows程序内部运行机制,相信可以帮助大家更好的理解Windows程序运行原理及相应的VC++程序设计.具体内容如下: 创建一个Win32应用程序步骤: 1.编写WinMain函数; 2.创建窗口(步骤如下): a.设计(一个)窗口类(WNDCLASS) b.注册(该)窗口类. c.创建窗口. d.显示并更新窗口. 3.编写消息循环. 4.编写窗口过程函数. //WinMain.cpp #include <windows.h> #inc

  • pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)

    有时候我们需要在程序里执行一些cmd命令,使用os或者其它模块中的popen方法去执行 这个问题一般是程序内有输入导致的,这个输入可以是input(),也可以是其它的一些stdin操作(如os.popen实际上会造成输入请求) 本质上就是:使用-w参数(无控制台)打包时程序里不要请求输入 或者,你也可以不用-w参数,手动隐藏控制台! 有一天,我把使用了os.popen方法的python程序用pyinstaller打包成exe(用了无控制台打包参数-w) 双击运行时程序却弹框报错! 我就有点纳闷:

  • 让应用程序只运行一个实例的实现方法

    在我们的程序当中如果要实现类似<360软件管家>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例. 对于第一个问题,我们可以通过设置命名互斥对象或命名信标对象,在程序启动的时候检测互斥对象或信标对象,如互斥对象或信标对象已存在,则可以判断此程序已有一个实例正在运行. 第二个问题是如何找到已经运行的应用程序实例,如果我们能够找到已运行实例主窗口的指针,即可调用SetForegroundWindow来激活该实例.我们可以

  • ASP.NET也像WinForm程序一样运行的实现方法

    由于现在会使用WinForm的人是越来越少了,可能有时候做点小东西就只好用ASP.NET去完成了(喜欢控制台的朋友请不要顶针),如果是这样,悲剧就发生了:一个小工具(或者小的演示项目),发给朋友去用,总不至于让人家也装个IIS或者VS20XX吧?如果没有这二样,这种小工具还真不方便运行.怎么办?做过ASP.NET开发的人都知道:网站通常要布署到IIS上才能直接运行,当然也不排除你用VS打开项目并使用VS自带的WebDev.WebServer.exe来启动程序.这种方式难免有不方便的时候. 我平时

  • 用VBS调用程序并对程序的运行情况进行监控的两个代码

    有同时要用一个CAE软件调用外部程序,但是,通过这个CAE软件调用外部程序以后,因为这个外部程序有参数,调用方法写在Bat文件里的,由CAE软件来调用这个Bat,所以,CAE软件没办法对调用的程序进行监控,调用的程序还在运行当中,准备工作还没完成,就到了下一流程,所以,造成流程出错,我写了两个VBS代码,通过它来调用就解决了这个问题!两个小程序分别是按不同的方式来监控的! 两个程序的调用方式不一样,一个是对系统进程进行监控,一个是对程序生成的文件特征进行监控! 第一个: '该程序用来配合SimC

  • C++ 学习之旅 Windows程序内部运行原理

    学习C++与.net不同的是,一定要搞清楚Windows程序内部运行原理,因为他所涉及大多数是操作系统的调用,而.net毕竟是在.netFrameWork上唱戏. 那Windows应用程序,操作系统,计算机硬件之间的相互关系究竟什么了,下面的图就给予很好的解释. 向下箭头①是 应用程序运行判断处理的结果,输出到输出的设备. 向上箭头②是输入设备,输入到操作系统中. 向下箭头③代表API,我们要解释以下API是什么.API是应用程序接口, 表示应用程序可以通知操作系统执行某个具体的动作,如操作系统

  • 如何利用JConsole观察分析Java程序的运行并进行排错调优

    一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 "近亲" VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码. 二.如何启动JConsole 1.如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可. 2.如果从 GUI shell 启动,找到 JDK 安装路

  • C#判断某程序是否运行的方法

    本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考. 具体实现方法如下: [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImp

随机推荐