Почему я не могу перетащить файл для редактирования в блокноте в Windows Server 2008?

Почему я не могу перетащить файл для редактирования в блокноте в Windows Server 2008?

Когда запущен блокнот, я могу перетащить/отпустить файл, чтобы открыть его, но затем он не может сохранить файл. Когда я запускаю блокнот с повышенными правами, чтобы сохранить файл, я больше не могу перетащить/отпустить, чтобы открыть файл.

Я понимаю, что перетаскивание файла из программы без повышенных прав в программу с повышенными правами представляет угрозу безопасности; однако, когда я запускаю Проводник с повышенными правами, я все равно не могу перетащить файл в Блокнот с повышенными правами.

Почему ОС не позволяет двум программам с повышенными правами обмениваться информацией с помощью перетаскивания? Я серьезно подумываю вернуться к использованию Windows Server 2003 вместо этого.

Редактировать: Кажется, что две программы с повышенными правами могут обмениваться информацией; explorer просто не мог повысить свои права. После повышения прав explorer файлы можно перетаскивать из explorer в блокнот с повышенными правами.

решение1

Невозможность «перетаскивания» из Проводника в окно Блокнота с повышенными правами является проявлением изоляции привилегий пользовательского интерфейса (УИПИ) функция. Она находится в ОС, чтобы не допустить отправки менее привилегированным приложением произвольных "сообщений" (в смысле межпроцессного взаимодействия операционной системы и приложения) другому, более привилегированному приложению. Если более привилегированное приложение неправильно обработало сообщение, то менее привилегированное приложение может заставить более привилегированное приложение выполнить произвольный код от своего имени (эти типы атак называютсяразбитьатаки, названные так в статье 2002 года, описывающей метод атаки в текущих версиях Windows).

Вы можете представить это как своего рода «брандмауэр» между приложениями, работающими с более низким «уровнем целостности» (непривилегированные), и приложениями с более высоким уровнем целостности (повышенным).

Если выДЕЙСТВИТЕЛЬНОХотите иметь повышенный уровень прав проводника Windows? Сделайте следующее:

  • Запустите командную строку с повышенными привилегиями и оставьте ее открытой.
  • Запустите Диспетчер задач и повысьте его уровень, перейдя на вкладку «Процессы» и нажав «Показать процессы всех пользователей».
  • Выделите и завершите все экземпляры Explorer.Exe с помощью диспетчера задач.
  • В открытом окне командной строки с повышенными привилегиями введите «Проводник» и нажмите <ENTER>.

Explorer снова откроется в повышенном режиме.

решение2

Если вы не хотите отключать UAC, вы можете попробовать просто отключить UIPI (изоляцию привилегий пользовательского интерфейса).

Откройте regedit и перейдите к:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

Добавьте новый DWORD (32-bit) Valueфайл EnableUIPIи установите для него значение 0.

Перезагрузите машину и проверьте, работает ли она так, как вам нужно.

решение3

Это была проблема в Vista, и я думаю, что она также перешла в Server 2008. По сути, вы не можете запустить Explorer с повышенными правами. У вас есть опция безопасности, чтобы сделать это, и, кажется, это сработало, когда вы это сделали, но на самом деле вы все равно получаете стандартное (не повышенное) окно Explorer, отсюда и проблема, с которой вы столкнулись.

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

решение4

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

Связанный контент