1

Я пытаюсь запустить Win7 exe, который находится на сетевом ресурсе (сервер Linux CIFS). Общий ресурс был создан не администратором (см. Проблему с Windows 7 для доступа к общей папке). Я могу читать и редактировать и записывать файлы в папке, содержащей exe. Я могу прочитать (т.е. скопировать) exe.

Но когда я пытаюсь запустить exe-файл, либо дважды щелкнув и нажав ОК в диалоговом окне UAC, либо щелкнув правой кнопкой мыши "Запуск от имени администратора", я получаю:

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.

Должен ли я скопировать исполняемый файл на локальный диск, прежде чем я смогу его запустить?

Я следовал за рецептом в (еще не принятом ответе) Как я могу запустить EXE с общего сетевого ресурса?, но это, кажется, предоставляет только разрешения на чтение, а не разрешения exe.

(Относительно связано: не удается запустить .exe с сетевого диска.)

3 ответа3

1

Некоторые установщики должны быть доступны в NT AUTHORITY\SYSTEM , но сетевые диски зависят от пользователя. EnableLinkedConnections не поможет в этом случае.

Удалите существующий сетевой диск и снова сопоставьте его на системном уровне. Для этого создайте запланированное задание с действием: net.exe и аргументами: use z: \\host\share\ ( укажите пароль, если необходимо) и измените учетную запись для запуска этого задания на NT AUTHORITY\SYSTEM . /PERSISTENT:yes , похоже, не работает, поэтому вам нужно запланировать его запуск при загрузке

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

1

Вы должны установить значение EnableLinkedConnections равным 1, как описано в этой статье базы знаний:

Подключенные диски недоступны из приглашения с повышенными привилегиями, если для UAC в Windows настроено "Запрашивать учетные данные"
https://support.microsoft.com/en-us/kb/3035277

  1. В редакторе реестра найдите и щелкните следующий раздел реестра:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

  2. На правой панели щелкните правой кнопкой мыши New и выберите DWORD (32-bit) Value.

  3. Назовите новую запись реестра как EnableLinkedConnections .
  4. Дважды щелкните запись реестра EnableLinkedConnections .
  5. В диалоговом окне «Изменить значение DWORD» введите 1 в поле «Значение» и нажмите кнопку «ОК».
  6. Закройте редактор реестра и перезагрузите компьютер.
0

Это ожидаемое (хотя и необычное) поведение.

Когда вы запускаете программу из общего сетевого ресурса, это можно сделать несколькими способами.

  1. Общий ресурс сопоставлен с сетевым диском: например, g: -> \\server\share
  2. Доступ к общему ресурсу осуществляется напрямую: \\server\share

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

Что происходит, когда я запускаю программу от имени администратора?

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

Это даже возможно, если настройки безопасности на общем ресурсе очень жесткие, у пользователя с правами администратора также нет разрешения.

Как устранить неполадки и преодолеть проблему?

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

Сначала вы можете запустить командную строку от имени администратора. Оттуда введите следующую команду:

net use g: \\server\share

Замените диск и поделитесь им, чтобы они соответствовали существующему ресурсу.

Пока открыто это окно командной строки, вы можете запускать исполняемый файл от имени администратора, и он будет работать гарантированно.

Если у вашего пользователя нет прав на \\server\share , сетевое использование завершится с ошибкой, сообщившей вам именно это, чтобы вы знали, где эта проблема.

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

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