Запрашивать с помощью UAC, когда у пользователя нет доступа для копирования файла - PullRequest
3 голосов
/ 17 июня 2010

В моем приложении, если пользователь сохраняет файл в папку, для которой у него нет разрешений, File.Copy завершится ошибкой. Примером является сохранение документа в C: \ root.

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

1 Ответ

5 голосов
/ 18 июня 2010

Короче ... нет.

Весь процесс должен быть повышен, и это повышение должно произойти при запуске. Тем не мение! Вы можете создать отдельный процесс для выполнения этой работы. Создайте отдельный .exe-файл, который выполняет только эту работу и получает все необходимое в параметрах командной строки. Вы можете добавить глаголы к процессу, которые приведут к его повышению:

Process p = new Process();
p.StartInfo.FileName = "copy.exe";
p.StartInfo.Arguments = new [] { pathFrom, pathTo };
p.Verb = "runas";
p.Start();

Что-то в этом роде ...

...