Где находится временный каталог, который может использовать моя программа, если пользователь не является администратором?

Моему приложению теперь нужно создавать, а затем записывать файлы в временный каталог, который находится внутри установленного каталога. 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 setup project msis)

Спасибо!

0
задан Isaac Bolinger 28 February 2012 в 14:16
поделиться