Доступ для записи к папке Program Files

Другие предложения хороши, если у Вас есть "SQL только".

Однако я предлагаю, это - , если возможный - Вы вычисляете дату в своей программе и вставляете его как строку в SQL-запросе.

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

6
задан Eric Girard 11 November 2009 в 13:48
поделиться

3 ответа

Лучший способ написать средство автоматического обновления - это иметь дополнительное приложение. Первая программа вызывает вторую с повышенными привилегиями, запрашивая UAC. Затем второе приложение сможет установить исправления.

4
ответ дан 9 December 2019 в 22:36
поделиться

Важно знать о UAC, что по умолчанию ни один код не работает с правами администратора и, следовательно, не может выполнять запись в каталог Program Files. Даже если вы вошли в систему как администратор, приложения запускаются со стандартными правами пользователя.

Есть два способа обойти это. Пользователь может запустить приложение с помощью пункта меню «Запуск от имени администратора». Но это зависит от того, что пользователь что-то помнит. Лучше было встроить манифест в ваш исполняемый файл, который запрашивает права администратора. В манифесте задайте для requiredExecutionLevel значение requireAdministrator. Это заставит UAC запрашивать у пользователя учетные данные администратора, как только приложение запустится.

Как сказал Даниэль, Лучшее решение - вынести функцию обновления в отдельное приложение. У вашего основного приложения будет манифест, который устанавливает для параметра requiredExecutionLevel значение asInvoker, а ваше приложение для обновления - с запросом requireAdministrator. Ваше основное приложение может работать со стандартными привилегиями. Но когда необходимо выполнить обновление, используйте Process.Start для запуска приложения обновления, которое требует от пользователя ввода учетных данных администратора.

Начать запускать приложение обновления, которое требует от пользователя ввода учетных данных администратора.

Начать запускать приложение обновления, которое требует от пользователя ввода учетных данных администратора.

6
ответ дан 9 December 2019 в 22:36
поделиться

Я не уверен, что вы пытаетесь это сделать, но я нашел этот пост полезным. Включенный код позволяет определить, работает ли ваше приложение в Vista, включен ли UAC и повышен ли пользователь.

http://www.itwriting.com/blog/198-c-code-to-detect-uac-elevation-on-vista.html

затем перезапустите приложение с runas, чтобы позволить пользователю повысить права доступа

ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = Application.ExecutablePath;
Process.Start(processInfo);
1
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: