如何创建一个没有“隐藏”的VB6应用程序;“框架”;窗户,像Thundert6Main?

如何创建一个没有“隐藏”的VB6应用程序;“框架”;窗户,像Thundert6Main?,vb6,Vb6,我的旧vb6应用程序有一个安全要求,即不创建任何隐藏窗口,如ThunderRT6Main,它是为每个vb应用程序创建的隐藏窗口 我曾尝试创建activex dll的etc,并修改PE头以作为真正的控制台exe运行,但它们都会生成这些隐藏的vb窗口 我知道这些隐藏窗口用于事件处理,但我的exe没有GUI,也没有任何方式的事件驱动。我不明白——通常都有一个隐藏窗口——即使在作为服务运行时,也必须有隐藏窗口,例如用于处理异步HTTP请求(因为它们是事件驱动的) 安全原因是什么?据我所知,这是不可能的。

我的旧vb6应用程序有一个安全要求,即不创建任何隐藏窗口,如ThunderRT6Main,它是为每个vb应用程序创建的隐藏窗口

我曾尝试创建activex dll的etc,并修改PE头以作为真正的控制台exe运行,但它们都会生成这些隐藏的vb窗口


我知道这些隐藏窗口用于事件处理,但我的exe没有GUI,也没有任何方式的事件驱动。

我不明白——通常都有一个隐藏窗口——即使在作为服务运行时,也必须有隐藏窗口,例如用于处理异步HTTP请求(因为它们是事件驱动的)


安全原因是什么?

据我所知,这是不可能的。每个VB6应用程序都有一个隐藏的顶级窗口,框架在内部使用该窗口来接收来自系统的通知和其他事件,并监视应用程序中的所有其他窗口

即使您不创建任何其他表单,这个顶级窗口仍然会被创建,您也无法阻止它


正如其他人提到的,最好的选择可能是使用不同的编程语言/GUI框架创建此应用程序。VB的简单性和易用性带来了成本。

我不明白它怎么会是一种安全要求,但这项任务的难度是否表明您使用的工具不正确?为什么VB6是一个要求?这是一个完全成熟的传统VB6应用程序,我不想移植,所以我必须坚持VB6到我所能看到的。哦,谢谢大家这么快回来:)我已经用其他语言编写了非GUI /控制台应用程序,这些语言不需要使用事件,它们不会产生隐藏窗口来发送/接收窗口消息,因此,我认为这个选项在vb6中是可能的?vb6不是一种“非gui/控制台应用程序”语言。@Simon从理论上讲,更改窗口的类名当然是可能的,但我不知道这是否会破坏vb6的功能。我想可能会的。这到底有什么关系?您试图解决的“安全”问题是什么?为什么只关心窗口的类名或标题如此微不足道?@Simon抱歉,您现有的“受控环境”是微不足道的。你所要做的就是终止这个进程,这根本不需要有任何窗口。您需要使用组策略之类的方法来锁定您的计算机,并防止用户关闭他们无权关闭的内容。@Simon进程始终对具有相应权限的用户可见;windows也是如此。但是,阻止用户关闭进程的方式与阻止用户关闭窗口的方式相同。不,阻塞
WM_SYSCOMMAND
消息将不起作用,您只会阻止机器运行。这不是一个编程问题,这是一个权限问题,可以使用组策略解决。如果你有权限安装类似的东西,你就有必要的权限删除它。我不明白这一点。当然,即使Thundert6Main窗口以某种方式被移除,控制台窗口仍然可能被破坏。另外,我很想知道你认为怎样才能使你的过程不可质疑。这听起来像是雷蒙德·陈(Raymond Chen)提出的“令人敬畏的计划”模因的又一个例子,例如