去除 GraalVM 打包后的 Windows 本地程序控制台(editbin)
编辑默认情况下,GraalVM 打包后的 exe 文件子系统类型为 CONSOLE
。目前,GraalVM 尚未提供相关设置选项。然而,您可以通过以下方法在 Windows
系统上更改子系统类型。您可以使用 Windows SDK 附带的工具中的 editbin
来实现这一目的。通过简单的命令,您可以将打包后的 exe 文件的子系统类型设置为 WINDOWS
。这样,再次运行程序时,就不会再出现命令行黑框,而程序会在后台作为任务继续执行。更多关于 editbin
工具的信息,请参考Windows SDK 附带的工具。
editbin /SUBSYSTEM:WINDOWS my.exe
子系统类型
子系统类型决定了程序如何与操作系统交互。不同的子系统类型对应不同的运行环境。常见的子系统类型包括:
CONSOLE
:表示程序将在控制台环境下运行。WINDOWS
:表示程序将作为一个图形界面应用程序运行,并且需要一个窗口消息循环。NATIVE
:表示程序是针对特定的硬件或驱动程序的。WINDOWSCE
:表示程序是为 Windows CE 设计的。POSIX
:表示程序将使用 POSIX 环境。
editbin 工具介绍
editbin.exe
是一个命令行工具,属于 Microsoft 的开发工具集的一部分,通常用于修改编译后生成的可执行文件或 DLL 文件的属性。它可以用来更改 PE(Portable Executable)文件的多个属性,包括但不限于子系统类型、版本信息、调试信息等。
主要功能
修改子系统类型:
通过
/SUBSYSTEM:
选项,可以指定不同的子系统类型,如CONSOLE
,WINDOWS
,NATIVE
,WINDOWSCE
,POSIX
等。
设置调试信息:
通过
/DEBUG
选项,可以控制可执行文件中包含的调试信息。例如,
/DEBUG
可以用来启用调试信息,而/DEBUG:NONE
可以移除调试信息。
设置链接器选项:
通过
/LARGEADDRESSAWARE
选项,可以使程序能够使用大于 2GB 的地址空间(在 32 位系统上)。例如,
/LARGEADDRESSAWARE
可以使程序能够在大地址空间下运行。
设置 DLL 导入库:
通过
/IMPLIB:
选项,可以指定 DLL 的导入库文件名。例如,
/IMPLIB:mylib.lib
可以为 DLL 文件指定一个导入库文件名。
设置延迟加载 DLL:
通过
/DELAYLOAD:
选项,可以指定延迟加载的 DLL 名称。例如,
/DELAYLOAD:kernel32.dll
可以使程序在需要时才加载指定的 DLL。
设置程序的优先级:
通过
/PRIORITY:
选项,可以设置程序的优先级。例如,
/PRIORITY:HIGH
可以将程序的优先级设置为高优先级。
设置程序的堆栈大小:
通过
/STACK:reserve,commit
选项,可以设置程序的初始堆栈大小和最大堆栈大小。例如,
/STACK:1024k,1024k
可以设置初始和最大堆栈大小均为 1024KB。
设置程序的入口点:
通过
/ENTRY:
选项,可以指定程序的入口点。例如,
/ENTRY:mainCRTStartup
可以设置程序的入口点为mainCRTStartup
函数。
示例命令
以下是一些示例命令,展示 editbin
的不同功能:
设置程序为大地址空间感知
editbin /LARGEADDRESSAWARE my.exe
设置程序优先级为高
editbin /PRIORITY:HIGHEST my.exe
设置程序堆栈大小
editbin /STACK:1024k,1024k my.exe
设置程序入口点
editbin /ENTRY:mainCRTStartup my.exe
- 0
- 0
-
分享