为什么 Puttygen 创建的文件在 Windows 7 资源管理器中隐藏?

为什么 Puttygen 创建的文件在 Windows 7 资源管理器中隐藏?

在 Windows 7 家庭高级版中,将私钥保存在 C 盘根目录的 PuTTY 密钥生成器(又名 Puttygen)中后,它在 Explorer 中不可见。

如何重现:

  1. 启动 Puttygen。
  2. 生成密钥。
  3. 单击“保存私钥”(这也适用于“保存公钥”,但我只用它测试了原始情况)。
  4. 导航C:
  5. 输入名称,例如id_rsa,将文件另存为C:\id_rsa.ppk
  6. 启动 Explorer。
  7. 导航C:

结果:没有id_rsa.ppk可见。

为了证明该文件存在:

  1. 回到Puttygen。
  2. 再次点击“保存私钥”按钮。
  3. 导航C:

在此窗口中,您可以与文件进行交互。我从那里检查了文件属性:

  • 它没有被隐藏。
  • 已为我的用户选中“完全控制”。
  • “打开方式”奇怪地显示为“Windows Shell Common Dll”。

附加信息:

  • 我昨天安装了 Windows,因此它不是什么受索尼影响的怪物。
  • 它拥有所有最新的安全更新和.NET 4.0。
  • 已经安装了 TortoiseGit 和 7zip 集成,因此可以想象它们与此有关(尽管 .ppk 文件不应该与它们中的任何一个相关)。

事情做过使文件显示在资源管理器中:

  • 将文件保存在另一个目录中,然后使用 Explorer 将其复制/移动(均有效)到C:\。我确实收到了“目标文件夹访问被拒绝”请求,我必须先单击“继续”。
  • 将文件保存在另一个目录中并导航到那里。
  • 将文件保存在另一个磁盘的根目录(D:在本例中)并导航到那里。

事情失败的使文件显示在资源管理器中(F5每次操作后点击资源管理器窗口中的刷新):

  • 将文件重命名为foo.ppk
  • 以不同的名称保存了第二份副本。
  • 打开“显示隐藏文件、文件夹和驱动器”。
  • 关闭“隐藏受保护的操作系统文件”。
  • 将文件保存在另一个目录中,然后将其复制到C:\ 在 Puttygen 保存对话框中。 我曾是不是要求授予保存文件的权限,就像在 Explorer 中一样。

我天真的假设是 Explorer 有一些针对“受限”(实际上并非受限,因为 Puttygen 会忽略它)目录的内置特殊情况,仅通过“目标文件夹访问被拒绝”对话框更新文件列表。实际原因是什么?

答案1

在 Vista 和更新版本的 Windows 中,非特权进程不允许保存到“用户”没有写入权限的文件夹(即使您是本地管理员并且管理员组有访问权限)。因此,当非特权程序尝试在那里写入文件时,它实际上会保存在 中%localappdata%\VirtualStore

答案2

好吧,我见过同样的行为,文件确实在 VirtualStore 中,但我觉得有趣的是,如果我加载 bash shell(我安装了 cygwin),它会像我认为的那样将文件显示在 Program Files\putty 中,而不是像 windows cmd shell 那样奇怪地不可见。因此,如果您有 cygwin,您可以通过这种方式查看您的关键文件,而不必遍历整个文件系统。

相关内容