如何隐藏win32控制台应用程序的窗口

如何隐藏win32控制台应用程序的窗口,第1张

一 subsystem和可执行文件的启动

LINK的时候需要指定/subsystem,这个链接选项告诉Windows如何运行可执行文件。

我们知道用VC编写的程序,运行的时候是需要 C/C++运行库支持的当我们运行一个C/C++程序的时候

链接器会首先寻找应用程序的启动函数,例如:

如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式

/subsystem:"console" /entry:"mainCRTStartup" (ANSI)

/subsystem:"console" /entry:"wmainCRTStartuup" (UNICODE)

将 subsystem 选成"console"后,Windows在进入可执行文件的代码前(如mainCRTStartup),就会产生一个控制台窗口。之后mainCRTStartup 或 wmainCRTStartuup 会调用main或wmain。

如果你建立了一个win32 application,编译器得链接开关则会是一下形式

/subsystem:"windows" /entry:"WinMainCRTStartup" (ANSI)

/sbusystem:"windows" /entry:"wWinMainCRTStartup" (UINCODE)

将 subsystem 选成"console"后, *** 作系统就不产生console窗口,该类型应用程序的窗口由用户自己创建。WinMainCRTStartup 或 wWinMainCRTStartup 会调用 WinMain 或 wWinMain。

值得一提的是,在进入应用程序的Entry Point前,Windows的装载器已经做过C变量的初始化,有初值的全局变量拥有了它们的初值,没有初值的变量被设为0。

二 隐藏console窗口

有两种方法:

1 在默认情况下/subsystem 和/entry开关是匹配的,也就是:

"console"对应"mainCRTStartup"或者"wmainCRTStartup "

"windows"对应"WinMainCRTStartup "或者"wWinMainCRTStartup "

我们可以通过手动修改的方法使他们不匹配。例如:

#include "windowsh"

#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" ) // 设置入口地址

void main(void)

{

MessageBox(NULL, "hello", "Notice", MB_OK);

}

这个Console程序就不会显示Console窗口。

上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的

project->setting->link->project option中手工改动!

2 还有一个更直接的方法:那就是直接在EXE文件中将PE文件头的Subsystem从3改成2。在EXE文件中,PE文件头的偏移地址是0x3c,Subsystem是一个WORD,它在PE文件头中的偏移是0x5c。

在程序开始写\x0d\ShowWindow(GetConsoleWindow(), SW_HIDE);\x0d\\x0d\注意要包含windowsh。\x0d\\x0d\但这样依然会有控制台的窗口一闪而过。完美的方法是写WinMain入口的Win32程序,不产生窗口只建立消息循环,这样就完全没有窗口。

一般情况下随系统启动的程序都可以在“系统配置”中找到;

我们可以通过开始→运行在其中输入 msconfigexe

在“启动”栏中就可以找到随系统启动的程序了;

如果依然没有找到,那么我们依然在“运行”窗口中输入 regeditexe

再到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]主键中查找,如果依然未能找到,就再到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]主键中查找,如果还是未能找到那么我们可以通过开始→控制面板→管理工具→服务,打开系统服务控制面板,在其中查找启动类型为自动的服务项目,如果不是病毒程序应该会在这几处找到。

控制面板的图标一般在“C:\windows\system32”目录下,以“cpl”形式存在。如要隐藏多余图标,请单击“开始->运行”,输入“gpeditmsc”打开组策略对话框。依次选择“用户配置->管理模板->控制面板”

如果找不到“控制面板”,请在点击了“管理模板”之后点击菜单栏的“动作”->“添加/删除模板”->“添加”->点击“systemadm”,然后点击“打开”

双击“隐藏指定的控制面板程序”,选择“已启用”,并单击“不允许的控制面板程序的列表”后的“显示”按钮,然后单击“添加”,输入要隐藏的图标在控制面板中对应的文字,比如要隐藏“鼠标”图标,输入“鼠标”,然后一路确定即可或者输入要隐藏的图标对应的cpl文件名(如telephoncpl),一路确定即可如不清楚应该选择哪个cpl文件,只需在system32文件夹里依次双击那些cpl文件,然后视d出窗口情况确定(如双击telephoncpl便会d出“电话和调制解调器选项”)。删除cpl文件则会彻底将它清出控制面板门外。

在运行中输入regedit,进入注册表,然后在hkey_current_user\software\microsoft\windows\currentversion\Policies中,在该项下新建项“Uninstall”,然后在该项下新DWORD值项“NoWindowsSetupPage”。将其数值数据设置为“1”表示隐藏“添加/删除组件”图标,设备为“0”肯定表示显示该图标嘛!

当然这是在windows

9x、windows2000及windowsXP下才有用哦!

隐藏控制面板

修改注册表的键值

单击“开始--运行,然后输入regedit

(打开注册表)

2、依次展开:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

右键新建dword值

名为NoControlPanle

其值为1即可

数值1为隐藏所有程序,数值0为显示所有程序,重新登录或启动后生效!

另一种解决办法:

1、进入

开始-运行后,输入regedit后进入注册表;

2、在左边依次打开:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall;

3、备份HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(备份方法:将鼠标放在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion中的Uninstall上点右键,选择导出,保存在电脑里)

4、在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall中找到需要隐藏的项目()后,选中点右键将其删除!

5、打开控制面板--添加删除程序后你会发现你需要隐藏的程序不见了。

6、如果想在添加删除程序里出现,只要双击你导出来的注册表即可。

三种:

1-如何使不想被删除的软件名从“控制面板”中消失?

单击“开始”菜单,选择“运行”,在输入框中键入“regedit”,点按“确定”按钮,打开“注册表编辑器”,然后依次展开“HKEY_LOCAL-MACHINE\ SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL”,在下拉菜单中显示的都是“添加/删除程序”中的项目,你查看你要删除的软件的名称内容,找到后用鼠标右键点击该项,先点击“导出”,在“导出注册表文件”对话框中输入文件名并选择保存位置,再点击“保存”(这是备份注册表文件,以后要恢复时要使用,这一步千万不要忘了)。接下去再用鼠标右键点击该项,点击“删除”。这样 *** 作以后该软件就不在控制面板上出现了。

如果以后你想删除的话你也不能找到这个程序进行删除了怎么办?没关系,你找到上面所说的保存的备份注册表文件,用鼠标右键点击该文件,再点击“合并”即可。这样你会发现原来在控制面板没有的软件名称又有了,就能进行卸载了。这里再次提醒一下:这个备份的注册表文件要保存好!

如果你以前用手工方法卸载了,在“添加/删除程序”中总会留下残留信息,那怎样把它清除干净呢?还是用注册表的方法:

单击“开始”菜单,选择“运行”,在输入框中键入“regedit”,点按“确定”按钮,打开“注册表编辑器”,然后依次展开“HKEY_LOCAL-MACHINE\ SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL”,在下拉菜单中显示的都是“添加/删除程序”中的项目,选中要删除的残留信息内容,按“DEL”就可以了。

这个办法麻烦了一点,所以呢,不是很支持。

2-开始 运行 gpeditmsc

进入组策略

用户配置 管理摸版 控制面版 添加与删除程序 选择你需要的设置 选择已启动 就可以了

3(不全)-在C:\Windows\Inf下找到Sysocinf文件,用记事本程序打开 进行编辑

以上就是关于如何隐藏win32控制台应用程序的窗口全部的内容,包括:如何隐藏win32控制台应用程序的窗口、做Windows控制台程序,可以隐藏当前窗口吗、怎样关闭系统隐藏开启的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9326590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存