Vista UAC - Проблемы с подключением сетевых дисков

У нас есть приложение, которое программно отображает сетевые диски. В Vista с включенным UAC возникают некоторые странные проблемы.

Наше приложение отображает диск без повышенных прав, поэтому, если пользователь просматривает проводник и дважды щелкает для запуска exe, он запрашивает UAC. Поэтому, когда они его одобряют, он запрашивает имя пользователя / пароль для общего ресурса ... Странно, поскольку учетные данные сохранены.

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

Чтобы увидеть эту проблему в действии, выполните следующие действия:

  • Запустите cmd.exe без UAC
  • Запустите "net use w: \ yourHostname \ yourShare / user: yourUser yourPassword / persistent: yes"
  • Запустите cmd.exe от имени администратора
  • Введите "w:" и увидите сообщение об ошибке.

На этом этапе вы можете запустить обычное «чистое использование» и увидеть, что соединение на cmd с повышенными правами недоступно, но другой cmd без повышенных прав видит его как OK.

Кто-нибудь знает способ решения этой проблемы? или, может быть, способ привязать сетевой диск к «Всем пользователям»?


person jonathanpeppers    schedule 12.08.2009    source источник
comment
Этот вопрос может относиться к serverfault.   -  person Matt Ball    schedule 12.08.2009
comment
Нет, это вопрос программирования - им нужно наследовать привилегии при повышении уровня. Но я не знаю ответа :)   -  person bdonlan    schedule 12.08.2009
comment
Это определенно вопрос программирования, мы используем WNetAddConnection2 и WNetCancelConnection2 из нашего приложения, но это аналог команды net use.   -  person jonathanpeppers    schedule 13.08.2009


Ответы (2)


Это сделано намеренно.

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

http://blogs.msdn.com/cjacks/archive/2007/02/19/mapped-network-drives-with-uac-on-windows-vista.aspx обсуждает это более подробно.

person Michael    schedule 12.08.2009
comment
Итак, если пользователь Vista подключает сетевой диск, он не может запускать исполняемый файл с подключенного диска? Это будет работать только в том случае, если их имя пользователя / пароль учетной записи Windows совпадает с именем подключенного диска? Это кажется плохой ситуацией по замыслу. - person jonathanpeppers; 13.08.2009
comment
Несмотря на то, что у них одинаковое имя пользователя, пользователи с повышенным и не повышенным уровнем по-прежнему являются разными пользователями. Должен ли обычный пользователь иметь возможность сопоставлять диски с учетной записью администратора? Может ли это вызвать DOS, если нормальный пользователь приседает на сопоставлении дисков, чем нужно администратору? Может ли это вызвать EOP, если обычный пользователь направит отображение диска в какое-то место, которого администратор не ожидает, и заставит их запустить другой двоичный файл? - person Michael; 13.08.2009
comment
Я говорю, что Microsoft плохо это реализовала. Elevated не должен быть другим пользователем ни в какой форме или моде, на мой взгляд, они пошли по пути. Нет ли обходного пути для такой ситуации? - person jonathanpeppers; 13.08.2009
comment
Плохо ласкает. Установщик спрашивает, где что-то установить - конечный пользователь пытается перейти в сопоставленную папку - но что? Где все мои подключенные диски? Они ушли, потому что процесс установки должен был запускаться с повышенными правами. И в какой вселенной имеет смысл, чтобы у администратора было меньше привилегий, чем у обычного пользователя? Нет. UAC полон дыр, и это всего лишь поверхностный бальзам, а не реальная попытка обеспечения безопасности под Windows. - person Mordachai; 20.04.2010

Перейдите по этой ссылке: Ссылка на Regedit

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

РЕДАКТИРОВАТЬ:

Исходная ссылка мертва, но вот текст, скопированный из снимка 24 января 2009 г. на www.archive.org:


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

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System EnableLinkedConnections = (dword) 1

Также можно использовать раздел этого документа «Сценарии групповой политики могут не работать из-за контроля учетных записей пользователей».

http://technet2.microsoft.com/WindowsVista/en/library/5ae8da2a-878e-48db-a3c1-4be6ac7cf7631033.mspx?mfr=true

Я скоро опубликую дополнительную информацию об этом.

person jonathanpeppers    schedule 13.08.2009
comment
Это должно быть значение по умолчанию в реестре. Если только это не позволит пользователям с низким уровнем привилегий получить доступ только к привилегированным ресурсам, что должно быть отдельной проблемой. - person Mordachai; 20.04.2010
comment
Это решение отмечено корпорацией Майкрософт как неподдерживаемое решение, которое делает вашу систему небезопасной. Используйте его на свой страх и риск... - person Robert; 11.10.2011
comment
Я не уверен, насколько небезопасно разрешать процессу с повышенными правами доступ к сетевому ресурсу, созданному процессом без повышенных прав. Разве не в дверях уже есть приподнятый процесс? Тем не менее, это странная проблема, я бы предпочел использовать неподдерживаемый обходной путь, чтобы исправить это для большинства людей. - person jonathanpeppers; 11.10.2011
comment
Да, не знаю, как его вернуть. Это вопрос из 2009 года. - person jonathanpeppers; 16.11.2012
comment
Может это ссылка с такой же инфой, раз уж оригинал мертв? support.microsoft.com/kb/937624?wa=wsignin1.0 - person SilverSideDown; 14.02.2013
comment
Техническая статья, в которой описывается проблема и параметр реестра: technet.microsoft.com/library/ee844140. aspx - person oleschri; 25.08.2015