2

Я отмечаю опцию «печать в файл» в моем драйвере postscript, и независимо от того, куда я сообщаю файл, он попадает в особую папку.

Мне потребовались дни, чтобы наконец найти, где Vista скрывает мои постскриптумные файлы. Он хранит их в каком-то виртуальном пути, который скрыт:

C:\Users\MyUserName\AppData\Local\Microsoft\Windows\ Временные интернет-файлы \ Virtualized \ C \Users\MyUserName\ temp

Еще более интересно то, что я не проверяю скрытый атрибут папки Virtualized, но нет, Vista настаивает на том, чтобы он оставался скрытым. Конечно, скрытый бит отключен, но ни одна папка не отображается в проводнике или поиске. Я нашел это только потому, что кто-то еще упомянул это специальное место в блоге.

Есть ли способ заставить драйвер принтера отправить файл в реальную папку?

3 ответа3

4

Этот драйвер Postscript пытается поместить файл в:

c:\Users\Jerry\temp

Примечание: я не знаю, почему он пытается поместить его в вашу временную папку - это ошибка драйвера принтера.

Но процесс, который выполняет печать, был отмечен как Уровень целостности: Низкий. Это означает, что процесс очень ограничен в том, что ему разрешено делать на компьютере.

Одним из этих ограничений является только возможность записи в местоположения файловой системы, для которых задан уровень Integrity: низкая запись (т. Е. c:\Users\Jerry\temp не разрешает запись с низкой целостностью). При установке Windows Vista/7 по умолчанию помечаются только две папки с низким обязательным уровнем целостности:

  • %LOCALAPPDATA%\LocalLow
  • %LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files\Low

Это единственные два места, в которые разрешено писать процессу с низким уровнем целостности.

Если процесс получает "отказ в доступе" при попытке сохранить файл: Windows снова попытается сохранить в режиме без вывода сообщений, но на этот раз перенаправляется в место, где разрешена запись. (Примечание: это хак совместимости для приложений, которые были написаны до существования Low Integrity )


Тот же эффект происходит, если вы пытаетесь записать в местоположение, которое требует доступа администратора , но вы только обычный пользователь. например, если я пытаюсь сохранить файл в:

C:\Windows\test.txt

Запись не удастся, и Windows снова попытается сохранить, но на этот раз:

%LOCALAPPDATA%\Local\VirtualStore\Windows\test.txt

Позже, если вы попытаетесь открыть

C:\Windows\text.txt

Windows будет молча перенаправлять на копию в виртуальном магазине.

Все это делается для того, чтобы приложения, которые ошибочно полагают, что все пользователи являются администраторами, будут по-прежнему функционировать, когда пользователь действительно является обычным пользователем.

Примечание. В Windows XP эти приложения выходят из строя и, как правило, ужасно, когда им не разрешается сохранять данные в любом месте. Microsoft добавила, с Windows Vista, эту огромную инфраструктуру совместимости, чтобы позволить этим мошенническим приложениям работать как обычный пользователь.


Следующий вопрос: почему некоторые папки скрыты, когда вы их скрываете.

Папки, имеющие атрибуты « Только чтение» и « Системные» , понимаются как специальные системные папки. Чтобы увидеть их, вам нужно изменить настройки Windows Explorer и отключить:

  • Скрыть защищенные файлы операционной системы (рекомендуется)

Кроме того, ваша папка Temporary Internet Files помечена как скрытая, поэтому вам также придется отключить параметр:

  • Не показывать скрытые файлы и папки

Вы можете быть удивлены, как Internet Explorer может загружать файлы; когда не разрешено писать в любое место, кроме Обязательного уровня целостности: Низкое местоположение.

Ответ заключается в том, что после загрузки файла процесс, выполняющий вкладку, возвращается к узлу контроллера Internet Explorer и просит его переместить файл в требуемое место. Процесс контроллера IE выполняется с вашими привилегиями (обычного пользователя), в то время как каждая вкладка выполняется в процессе низкой целостности.


Я думаю, что если вы печатаете что-то из Блокнота, Word или какого-то другого « обычного » процесса уровня целостности, сохранение будет работать нормально ... во временную папку.

Я удивлен, что он не спрашивает вас, где вы хотите сохранить файл.

1

Почему это входит во "Временные интернет-файлы"? Ваш драйвер работает в контексте Internet Explorer случайно? В целях безопасности IE виртуализирует много доступа к файлам, чтобы предотвратить запись кода в защищенные места.

0

Вы пытались найти в реестре этот путь или, возможно, последнюю его часть (например, C\Users\MyUserName\temp)? Если вы найдете его, вы сможете изменить настройки, перенаправив их в другое место. Не уверен, сможете ли вы помешать ему использовать виртуальный каталог или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .