From f0e1c7e72c9a26d971b1fd8855a9a548c652b37d Mon Sep 17 00:00:00 2001 From: Syngnat Date: Sat, 14 Feb 2026 15:01:29 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(driver-agent):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20Windows=20=E5=90=AF=E5=8A=A8=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E5=BC=B9=E5=87=BA=E7=BB=88=E7=AB=AF=E7=AA=97?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 Windows 新增 agent 进程启动参数(HideWindow + CREATE_NO_WINDOW) - optional driver agent 启动路径统一应用进程隐藏配置 - MySQL agent 启动路径同步应用进程隐藏配置 --- internal/db/agent_process_stub.go | 9 +++++++++ internal/db/agent_process_windows.go | 20 ++++++++++++++++++++ internal/db/mysql_agent_impl.go | 1 + internal/db/optional_driver_agent_impl.go | 1 + 4 files changed, 31 insertions(+) create mode 100644 internal/db/agent_process_stub.go create mode 100644 internal/db/agent_process_windows.go diff --git a/internal/db/agent_process_stub.go b/internal/db/agent_process_stub.go new file mode 100644 index 0000000..0b0e3b2 --- /dev/null +++ b/internal/db/agent_process_stub.go @@ -0,0 +1,9 @@ +//go:build !windows + +package db + +import "os/exec" + +func configureAgentProcess(cmd *exec.Cmd) { + _ = cmd +} diff --git a/internal/db/agent_process_windows.go b/internal/db/agent_process_windows.go new file mode 100644 index 0000000..c268037 --- /dev/null +++ b/internal/db/agent_process_windows.go @@ -0,0 +1,20 @@ +//go:build windows + +package db + +import ( + "os/exec" + "syscall" +) + +const windowsCreateNoWindow = 0x08000000 + +func configureAgentProcess(cmd *exec.Cmd) { + if cmd == nil { + return + } + cmd.SysProcAttr = &syscall.SysProcAttr{ + HideWindow: true, + CreationFlags: windowsCreateNoWindow, + } +} diff --git a/internal/db/mysql_agent_impl.go b/internal/db/mysql_agent_impl.go index c5b53f6..b3ffe19 100644 --- a/internal/db/mysql_agent_impl.go +++ b/internal/db/mysql_agent_impl.go @@ -72,6 +72,7 @@ func newMySQLAgentClient(executablePath string) (*mysqlAgentClient, error) { } cmd := exec.Command(pathText) + configureAgentProcess(cmd) stdin, err := cmd.StdinPipe() if err != nil { return nil, fmt.Errorf("创建 MySQL 驱动代理 stdin 失败:%w", err) diff --git a/internal/db/optional_driver_agent_impl.go b/internal/db/optional_driver_agent_impl.go index 18f88ce..c61bd70 100644 --- a/internal/db/optional_driver_agent_impl.go +++ b/internal/db/optional_driver_agent_impl.go @@ -73,6 +73,7 @@ func newOptionalDriverAgentClient(driverType string, executablePath string) (*op } cmd := exec.Command(pathText) + configureAgentProcess(cmd) stdin, err := cmd.StdinPipe() if err != nil { return nil, fmt.Errorf("创建 %s 驱动代理 stdin 失败:%w", driverDisplayName(driverType), err)