C # мне нужно, чтобы моя программа запускалась как администратор в первый раз, чем после этого, как обычный пользователь - PullRequest
0 голосов
/ 07 сентября 2018

Привет, я сейчас пишу программу для проекта и создал установщик, используя инструменты Visual Studio C #, но когда он устанавливает мою базу данных, он имеет только права на чтение, и я не могу ее редактировать. Я использовал следующий код для изменения прав, но он работает, только если я запускаю его как администратор.

DirectoryInfo dInfo = new DirectoryInfo(@"C:\Program Files\Group 27\Bookstore Bargainers\new itrw225 data1.mdb");
        DirectorySecurity dSecurity = dInfo.GetAccessControl();
        dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl,
                                                         InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
                                                         PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
        dInfo.SetAccessControl(dSecurity);

Что я хочу сделать, так это один раз автоматически запустить программу как администратор, а затем переключиться на обычного пользователя. Как бы я это сделал? Я пытался использовать манифесты, но я не могу отредактировать его в коде.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Папка Program Files больше не является подходящим местом для размещения вашей базы данных и существует уже почти два десятилетия. Используйте это выражение C #, чтобы получить лучшее местоположение, где непривилегированные пользователи уже имеют разрешения на запись:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Ваш установщик может поместить экземпляр базы данных по умолчанию в папку Program Files для вашего приложения, но приложение должно копировать базу данных только в специальную папку All User Application Data, если оно не может найти ее там, и что требуется только обычное разрешение на чтение.

0 голосов
/ 07 сентября 2018

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

Если вам не нужно больше, чем один пользователь, тогда Рон говорит правду. Установите приложение и его базу данных в AppData.

Если метод установки, который вы используете, не дает вам возможности изменять разрешения или устанавливать в AppData (как MSI / WiX), то вам нужен более мощный установщик.

...