我在我的 PostScript 驱动程序中勾选了打印到文件选项,无论我告诉文件去哪里,它最终都会进入一个非常特殊的文件夹。
我花了好几天才终于找到 Vista 隐藏我的 PostScript 文件的位置。它将它们存储在某个隐藏的虚拟化路径中:
C:\Users\我的用户名\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\我的用户名\temp
更有趣的是,我取消选中了 Virtualized 文件夹的隐藏属性,但不行,Vista 坚持将其隐藏。当然,隐藏位已关闭,但没有文件夹显示在 Explorer 或搜索中。我之所以发现这一点,只是因为其他人在博客上提到了这个特殊的地方。
有没有办法让打印机驱动程序将文件发送到实际文件夹?
答案1
该 postscript 驱动程序正在尝试将文件放置在:
c:\Users\Jerry\temp
笔记:我不知道为什么它试图将其放在你的临时文件夹中 - 这是打印驱动程序的错误。
但进行打印的过程已被标记为完整性级别:低。这意味着该进程在计算机上可以执行的操作非常有限。
这些限制之一是只允许写入设置为允许的文件系统位置完整性级别:低写道(IE c:\Users\Jerry\temp
不允许低完整性写入)。Windows Vista/7 的默认安装仅标记两个文件夹为低强制完整性级别:
%LOCALAPPDATA%\LocalLow
%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files\Low
这是仅有的两个地方,低的“完整进程被允许写入。
如果某个进程在尝试保存文件时出现“访问被拒绝”的情况:Windows 将默默地再次尝试保存,但这次会重定向到允许写入的位置。(笔记:这是针对之前编写的应用程序的兼容性破解低完整性存在)
如果你尝试写入需要行政人员访问,但你只是一个标准用户。例如,如果我尝试将文件保存到:
C:\Windows\test.txt
写入将失败,并且 Windows 将默默地再次尝试保存,但这次将:
%LOCALAPPDATA%\Local\VirtualStore\Windows\test.txt
稍后,如果您尝试打开
C:\Windows\text.txt
Windows 将静默地重定向到虚拟商店。
这样做是为了让应用程序误以为所有用户都是管理员,当用户真的是标准用户。
笔记:在 Windows XP 上,当这些应用程序无法保存任意位置时,它们会失败,而且通常非常糟糕。在 Windows Vista 中,微软添加了这个庞大的兼容性基础架构,以允许这些流氓应用程序以标准用户身份运行。
下一个问题:为什么有些文件夹在取消隐藏时仍被隐藏。
文件夹包含只读&系统属性被理解为特别的 系统文件夹。为了看到它们,你必须改变你的Windows资源管理器偏好设置,然后关闭:
- 隐藏受保护的操作系统文件(推荐)
此外,您的Temporary Internet Files
文件夹被标记为隐,所以你也必须转身离开选项:
- 不显示隐藏文件和文件夹
你可能想知道 Internet Explorer 如何下载文件;当它不允许写入除强制完整性级别:低地点。
答案是,一旦文件被下载,运行标签与 Internet Explorer 通信控制主机并要求它移动将文件复制到您请求的位置。IE 控制器进程使用您的 (标准用户)特权 - 虽然每个选项卡都在一个低完整性流程。
我认为如果你打印一些东西记事本, 或者单词或其他一些“常规的“完整性级别进程,保存将正常工作......到临时文件夹。
我很惊讶它没有询问您要将文件保存在哪里。
答案2
为什么它会进入“临时 Internet 文件”?您的驱动程序是否恰好在 Internet Explorer 上下文中运行?出于安全原因,IE 虚拟化了大量文件访问,以防止将代码写入受保护的位置。
答案3
您是否尝试在注册表中搜索该路径或该路径的最后部分(例如 C\Users\MyUserName\temp)?如果找到它,您可能能够更改设置,将其指向其他位置。不确定您是否可以阻止它使用虚拟目录。