Административные права: Winforms против WPF - PullRequest
1 голос
/ 16 марта 2011

Я портировал приложение Winforms в WPF и заметил следующее относительно прав администратора. Приложение запускает внешнее приложение командной строки как часть его выполнения, используя ProcessStartInfo. Приложение Winforms не имеет манифеста приложения и запускает приложение правильно. Однако версия WPF не будет правильно запускать внешнее приложение, ЕСЛИ Я не предоставляю права администратора приложения WPF. ()

Я бы предпочел не делать этого из-за несколько раздражающего диалога подтверждения UAC. Я попытался добавить «ProcessStartInfo» Verb = «runas», но это не имеет никакого эффекта.

Кто-нибудь знает, почему версия Winforms в порядке, но версия WPF требует прав администратора? FYI. Внешнее приложение обрабатывает файл и записывает выходной файл в папку в каталоге программных данных)

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Запись в программные файлы не рекомендуется.Если у вас есть контроль над этими системными службами, измените их так, чтобы они брали данные из папки Environment.SpecialFolder.CommonApplicationData, это расположение не зависит от пользователя и используется в системе.Затем ваш исполняемый файл запишет свой вывод в Environment.SpecialFolder.CommonApplicationData.


Где находится ProgramData?Если он находится в папке Program Files, то и ваши приложения WinForms и WPF должны иметь права администратора для записи в него.

0 голосов
/ 16 марта 2011

Кажется, что внешний процесс, запущенный из приложений Wpf, не имеет доступа к папке ProgrammData, хотя родительское приложение делает.(Да, мне действительно нужно писать в папки внутри PrgrammData. У меня есть системные службы, которые должны использовать данные, и эти службы не знают пользователей ...)

При наличии внешнего приложения для записи в Environment.SpecialFolder.ApplicationData и затем родительское приложение перемещает файлы из Environment.SpecialFolder.ApplicationData в программные данные ... все работает как в приложениях Winforms

...