GetTempPath и All Users->Temp
От: ZOI4  
Дата: 22.09.11 08:19
Оценка:
В описании GetTempPath сказано:

The GetTempPath function checks for the existence of environment variables in the following order and uses the first path found:

1.The path specified by the TMP environment variable.
2.The path specified by the TEMP environment variable.
3.The path specified by the USERPROFILE environment variable.
4.The Windows directory.


А как же "All Users"/Default ->...->Temp? Получается, что папка для временных файлов, общая для всех пользователей, будет в папке Windows? C:\Windows\Temp требует админских привелегий при включенном UAC. А если я хочу папку для временных файлов, общую для всех пользователей, и чтоб не заморачиваться на админские права, есть какой-то уже готовый вариант (чтоб не делать самому)?
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re: GetTempPath и All Users->Temp
От: acDev Россия  
Дата: 23.09.11 07:51
Оценка:
Здравствуйте, ZOI4, Вы писали:

ZOI>А как же "All Users"/Default ->...->Temp? Получается, что папка для временных файлов, общая для всех пользователей, будет в папке Windows? C:\Windows\Temp требует админских привелегий при включенном UAC. А если я хочу папку для временных файлов, общую для всех пользователей, и чтоб не заморачиваться на админские права, есть какой-то уже готовый вариант (чтоб не делать самому)?


Полагаю придётся делать свою функцию, т.к. надеятся на верное заполнение Env параметров тоже не стоит.
Мой вариант таков:
1) Вызываем SHGetSpecialFolderPathW с параметром CSIDL_LOCAL_APPDATA
2) Добавляем к полученному пути L"\\Temp"
3) Проверяем наличие этой директоии (на Vista+ она всегда есть) и, если таковой нету, создаём.

На WinXP параметр CSIDL_LOCAL_APPDATA отвечает за директорию "%USERPROFILE%\Local Settings\Application Data", а сама временная папка тут: "%USERPROFILE%\Local Settings\Temp".
Полагаю ничего страшного не будет, если второй Temp создать в AppData ....
Re: GetTempPath и All Users->Temp
От: Centaur Россия  
Дата: 23.09.11 08:32
Оценка:
Здравствуйте, ZOI4, Вы писали:

ZOI>папка для временных файлов, общая для всех пользователей


Зачем?
Re[2]: GetTempPath и All Users->Temp
От: ZOI4  
Дата: 23.09.11 09:18
Оценка:
Здравствуйте, Centaur, Вы писали:

ZOI>>папка для временных файлов, общая для всех пользователей


C>Зачем?


Ну, например у меня этот файл грузится процессом работающим под SYSTEM, а я хочу скачать файл, и запустить его под юзером.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[2]: GetTempPath и All Users->Temp
От: ZOI4  
Дата: 23.09.11 09:27
Оценка:
Здравствуйте, acDev, Вы писали:

D>Полагаю придётся делать свою функцию, т.к. надеятся на верное заполнение Env параметров тоже не стоит.


Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[3]: GetTempPath и All Users->Temp
От: De-Bugger  
Дата: 23.09.11 09:39
Оценка: +1
Здравствуйте, ZOI4, Вы писали:

ZOI>Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а.

Сама идея общего Temp-а ущербна по своей сути и указывает на большие архитектурные огрехи вашего приложения.
Re[4]: GetTempPath и All Users->Temp
От: ZOI4  
Дата: 23.09.11 09:47
Оценка:
Здравствуйте, De-Bugger, Вы писали:

ZOI>>Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а.

DB>Сама идея общего Temp-а ущербна по своей сути и указывает на большие архитектурные огрехи вашего приложения.

Хм, наверное вы правы. Если известен юзер, то можно в его Temp класть и запускать
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.