Я пишу небольшую программу .NET для Windows 7. Одна вещь, которую нужно сделать, это создать символические ссылки, которые, как мне кажется, требуют от меня прав администратора.Он также должен иметь возможность работать с подключенными сетевыми дисками (например, R: \, который в моей системе соответствует \\titanium\Private\
).
Я использую Directory.Exists(path)
, чтобы проверить, существует ли путь.
При запуске программы от имени обычного пользователя (учетная запись администратора, но не «от имени администратора») это нормально работает на подключенном сетевом диске.
При запуске программы от имени администратора (с UAC), он не может найти существующие каталоги.В результате программа отказывается признать, что R:\Steam Games\
- это каталог, который действительно существует.
Я немного сбит с толку относительно того, почему это происходит.Использование полного пути UNC (\\titanium\Private\Steam Games\
) также не работает.
Кто-нибудь сталкивался с этим раньше?Есть ли хороший обходной путь?Нужно ли форматировать пути по-разному (заметьте: большинство из них в настоящее время отформатированы с Path.Combine
, поэтому они должны быть правильными).
Спасибо за вашу помощь.
(Например, Directory.Exists(@"R:\Steam Games\")
возвращает false при запуске от имени администратора, но эта папка существует. Вызов функции правильно возвращает true при регулярном запуске).
Редактировать: Проблема действительно заключается в том, чтоАдминистратор технически другой учетной записи пользователя.Я даже не мог использовать UNC-пути, потому что я вошел на свой файловый сервер только под моим обычным пользователем, а не под «Администратором».В качестве (относительно хакерского) обходного пути я просто запускаю свою программу с обычными привилегиями и затем использую Process.Start
, чтобы вызвать экземпляр cmd.exe с аргументами для создания символической ссылки (и глагол «runas», чтобы получить приглашение UAC).