Это ожидаемое (хотя и необычное) поведение.
Когда вы запускаете программу из общего сетевого ресурса, это можно сделать несколькими способами.
- Общий ресурс сопоставлен с сетевым диском: например,
g:
-> \\server\share
- Доступ к общему ресурсу осуществляется напрямую:
\\server\share
Первый из них может вызвать проблемы, когда вы запускаете программу от имени администратора, и я объясню это ниже.
Что происходит, когда я запускаю программу от имени администратора?
Когда вы запускаете программу от имени администратора, создается новая среда и загружается профиль для администратора. Хотя он будет использовать права, которыми обладает ваш пользователь, он, очевидно, имеет дополнительные права для пользователя с правами администратора. Как следствие, никакие сопоставления с сетевым диском не создаются, и, таким образом, у вашего администратора нет дополнительных сетевых сопоставлений, присутствующих в его профиле, поэтому g: не существует.
Это даже возможно, если настройки безопасности на общем ресурсе очень жесткие, у пользователя с правами администратора также нет разрешения.
Как устранить неполадки и преодолеть проблему?
Очевидно, что вы можете просто скопировать файл локально и запустить его, но давайте предположим, что вы не хотите этого делать.
Сначала вы можете запустить командную строку от имени администратора. Оттуда введите следующую команду:
net use g: \\server\share
Замените диск и поделитесь им, чтобы они соответствовали существующему ресурсу.
Пока открыто это окно командной строки, вы можете запускать исполняемый файл от имени администратора, и он будет работать гарантированно.
Если у вашего пользователя нет прав на \\server\share
, сетевое использование завершится с ошибкой, сообщившей вам именно это, чтобы вы знали, где эта проблема.
Если права хороши, вы можете альтернативно получить доступ к исполняемому файлу, перейдя в \\server\share
и запустив исполняемый файл от имени администратора. Это устраняет необходимость иметь общий сетевой ресурс сначала в другой среде.