最近我发现我可以启动PuTTY,但没有显示任何窗口。任务栏中有PuTTY作为正在运行的应用程序,我可以右键单击它以获取移动和关闭选项。
如果我选择“移动”,PuTTY 窗口的轮廓就会移动,但仍然没有实际的 Putty 配置窗口。
如果我将远程桌面连接到同一台机器,我可以毫无问题地启动 PuTTY。
答案1
右键单击 putty.exe,然后在兼容性选项卡上选中“禁用桌面组合”。这对我来说很有效。它在 putty 运行时禁用 Windows Aero 主题。这很烦人,但很有效。
答案2
唯一真正的解决办法是更新到最新版本的PuTTY (>=0.65)PuTTY 主网站。
注:0.64(截至 2015-06-25 当前“稳定”)可能不起作用,您需要 >=0.65。请检查预发布版本或开发版本。
出现此问题的原因是 PuTTY 错误地设置并显示其窗口,它的工作更多是出于意外而非设计,导致它实际显示的“错误”已由最近的 Windows 更新修复。这意味着该错误不再起作用,PuTTy 窗口不再正确显示。
...最近的 Vista 更新(所有报告都表明与 KB3057839 有关)导致该功能不再起作用:在更新的 Vista 机器上,在某些桌面配置中,似乎在对话框设置期间尝试摆弄 WM_SETREDRAW 会导致对话框处于非常无用的不可见状态 - 窗口是身体上(您可以看到它的任务栏条目,并且当您将鼠标指针移到其编辑框所在的位置时,鼠标指针会发生变化),但 100% 透明。
所以现在我们要做一些更明智的事情。<snip> 在设置结束时,我们通过文档批准的 ShowWindow() 调用以合理的方式显示窗口。
这似乎(在我迄今为止测试过的一台机器上)修复了 Vista 不可见窗口的问题,而且它应该更加符合 API 标准,因此将来会更安全。
答案3
PuTTY 窗口就在那里,尽管它因为某些虚假原因而获得“透明”属性。到目前为止,比我见过的更简单的解决方法是将可见性重新设置。
以下方法适用于 32 位 Vista Home Premium,SP2。YMMV。
方法 1,一个简短的 AutoHotkey 脚本:
; show_PuTTY.ahk
; Must be launched when putty.exe is already running
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
WinWait, PuTTY Configuration
WinSet, Transparent, 255
方法 2,从批处理文件调用 Powershell 脚本(不需要任何其他程序):
# unhide.ps1
$definition = @"
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
public static void ShowWin()
{
IntPtr hwnd = FindWindow("PuTTYConfigBox", "PuTTY Configuration");
SetWindowLong(hwnd, -20, 524288);
}
"@
add-type -MemberDefinition $definition -Namespace my -Name WinApi
do {}
until(Get-Process putty -ErrorAction SilentlyContinue | Select -p Responding)
[my.WinApi]::ShowWin()
然后你可以从批处理文件(例如PuTTY.bat
)中调用它,放置在相同的位置unhide.ps1
:
@echo off
rem PuTTY.bat
start "" "%ProgramFiles%\PuTTY\putty.exe"
rem Use %ProgramFiles(x86)% for 32 bit PuTTY on 64 bit Vista
powershell.exe -ex remotesigned -f unhide.ps1
请参阅下面评论中的致谢。
答案4
PuTTY 版本预发布 0.65 可在 Vista 中与 Aero 配合使用。 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html