我正在为Linux和Windows编写一个图形化的git前端(MSEgit), 基于MSEide+MSEgui。 MSEgit有一个内部控制台窗口,通过管道与git通信。在Linux上,它使用PTY,因此SSH会在PTY上询问密钥解锁密码。
在Windows上,我编写了一个小型密码输入应用程序,并相应地设置了SSH_ASKPASS环境变量。
如果使用CreateProcess() dwCreationFlags DETACHED_PROCESS启动git,则SSH调用密码应用程序,但密码输入窗口不会被聚焦,而是闪烁任务栏图标。
如果调用FreeConsole()以确保没有附加到MSEgit的控制台并且使用CREATE_NO_WINDOW而不是DETACHED_PROCESS启动git,则SSH不会运行密码应用程序。
我假设需要调用Windows版本的POSIX setsid()。
如何强制SSH在没有DETACHED_PROCESS标志的情况下使用SSH_ASKPASS?
如果不可能,如何确保密码输入窗口聚焦?
在Windows上,我编写了一个小型密码输入应用程序,并相应地设置了SSH_ASKPASS环境变量。
如果使用CreateProcess() dwCreationFlags DETACHED_PROCESS启动git,则SSH调用密码应用程序,但密码输入窗口不会被聚焦,而是闪烁任务栏图标。
如果调用FreeConsole()以确保没有附加到MSEgit的控制台并且使用CREATE_NO_WINDOW而不是DETACHED_PROCESS启动git,则SSH不会运行密码应用程序。
我假设需要调用Windows版本的POSIX setsid()。
如何强制SSH在没有DETACHED_PROCESS标志的情况下使用SSH_ASKPASS?
如果不可能,如何确保密码输入窗口聚焦?