Позвольте праву доступа записать в Программных файлах Windows 7

Как-то так должно работать

h1, h2, h3 {
  background: url("the image link goes here") 0 center no-repeat;
  padding-left: 15px; /* change this to fit your needs */
}
52
задан Tomas Kubes 1 December 2016 в 03:57
поделиться

6 ответов

Ваша программа не должна записывать временные файлы (или что-либо еще в этом отношении) в каталог программы. Любая программа должна использовать% TEMP% для временных файлов и% APPDATA% для пользовательских данных приложения. Так было с Windows 2000 / XP, поэтому вам следует изменить свое приложение.

Проблема не в Windows 7.

Вы можете запросить путь к папке appdata:

string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

или путь TEMP

string dir = Path.GetTempPath()
88
ответ дан 7 November 2019 в 09:05
поделиться

Ваша программа должна запускаться с правами администратора. Вы не можете сделать это автоматически с помощью кода, но вы можете попросить пользователя (в коде) повысить права вашей программы во время ее работы. Есть вики о том, как это сделать. Как вариант, любую программу можно запустить от имени администратора, щелкнув ее значок правой кнопкой мыши и выбрав «Запуск от имени администратора».

Однако я бы не предлагал этого делать. Было бы лучше использовать что-то вроде этого:

Environment.GetFolderPath(SpecialFolder.ApplicationData);

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

27
ответ дан 7 November 2019 в 09:05
поделиться

Возможные варианты:

  • Запускать все приложение с правами полного администратора. используя UAC
  • Запускать подпроцесс от имени полного администратора только для тех вещей, которым требуется доступ
  • Записывайте временные файлы в другое место
11
ответ дан 7 November 2019 в 09:05
поделиться

Вы можете ' t заставляет приложение .Net повышать свои права. Это просто недопустимо. Лучшее, что вы можете сделать, - это указать повышенные права при запуске другого процесса. В этом случае у вас будет двухэтапный запуск приложения.

Этап 1 ничего не делает, кроме как подготавливает порождение с повышенными правами с помощью объекта System.Diagnostics.ProcessStartInfo и вызова Start ().

Этап 2 - это приложение, работающее в повышенное состояние.

Однако, как упоминалось выше, вы очень редко хотите это делать. И вы, конечно, не делаете Я хочу сделать это только для того, чтобы вы могли записывать временные файлы в% programfiles%. Используйте этот метод только тогда, когда вам нужно выполнить административные действия, такие как запуск / остановка службы и т. Д. Запишите свои временные файлы в лучшее место, как указано в других ответах здесь.

3
ответ дан 7 November 2019 в 09:05
поделиться

Я не могу согласиться с аргументами, что лучше записывать все файлы в другие каталоги, например,% APPDATA%, только вы не можете этого избежать, если хотите избежать запуска приложения от имени администратора в Windows 7.

Это Было бы намного чище хранить все данные, специфичные для приложения (например, файлы ini) в той же папке, что и приложение (или во вложенных папках), чтобы ускорить данные по всему диску (% APPDATA%, реестр и неизвестно где еще). Это просто идея Microsoft о чистом программировании. Чем, конечно, вам нужен очиститель реестра, очиститель диска, очиститель временных файлов, ... вместо e + очень чистая практика - удаление папки приложения удаляет все данные, специфичные для приложения (данные пользователя exep, которые обычно находятся где-то в моих документах или около того) .

В моих программах я бы предпочел иметь ini-файлы в каталоге приложения, однако у меня их там нет только потому, что они не могут быть там (в Windows).

2
ответ дан 7 November 2019 в 09:05
поделиться

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

1) Программа запуска, которая запускает другое основное приложение, используя такой код, как (VB)

Call ShellExecute(hwnd, "runas", App.Path & "\MainApp.exe", 0, 0, vbNormalFocus)

2) Основное приложение, которое записывает в защищенные области, то есть в папку Program Files

. успешно попробовал это с Windows 7

Я также разрабатываю приложение с функцией онлайн-обновления. Но это не работает в Vista / W7.

Я согласен с другими людьми в отношении политик и стандартных методов Microsoft.

Но мой вопрос ... 1) Как применить обновление к существующему приложению, которое, вероятно, всегда остается в папке Program Files. 2) Может быть, есть способ сделать это, иначе как работает программа обновления goolge, программа обновления антивируса или любая программа обновления программного обеспечения?

Мне нужен ответ на мои вопросы .....: o

Проф. Раджендра Хопе (Массачусетский технологический институт, Пуна, Индия)

1
ответ дан 7 November 2019 в 09:05
поделиться
Другие вопросы по тегам:

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