Где находится временный каталог, который может использовать моя программа, если пользователь не является администратором? - PullRequest
0 голосов
/ 06 февраля 2012

Мое приложение теперь должно создавать, а затем записывать файлы во временный каталог, который находится в его установленном каталоге.Msi помещает его в Program Files \ по умолчанию.Я не думал, что случится, если какая-нибудь бедная душа запустит его, используя учетную запись без прав администратора.

Description: Access to the path 'Temp' is denied.
StackTrace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) 
at System.IO.Directory.CreateDirectory(String path) 

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

В любом случае, есть ли способ:

1: закодировать каталогсоздание / запись в файл, так что он временно повышает права программы для администратора, если она не работает от имени администратора (я использую C #)

2: Настройте установщик для установки разрешений для каталога на «полный контроль»для всех в группе «Пользователи» (с помощью программы установки Windows msis)

Спасибо!

1 Ответ

6 голосов
/ 06 февраля 2012

Не делай этого .

Вы должны писать в пользовательские каталоги в папке AppData. (или Path.GetTempPath(), что в этом)

Все остальное создаст уязвимости безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...