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. А если я хочу папку для временных файлов, общую для всех пользователей, и чтоб не заморачиваться на админские права, есть какой-то уже готовый вариант (чтоб не делать самому)?
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Здравствуйте, 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 ....
Здравствуйте, acDev, Вы писали:
D>Полагаю придётся делать свою функцию, т.к. надеятся на верное заполнение Env параметров тоже не стоит.
Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Здравствуйте, ZOI4, Вы писали:
ZOI>Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а.
Сама идея общего Temp-а ущербна по своей сути и указывает на большие архитектурные огрехи вашего приложения.
Здравствуйте, De-Bugger, Вы писали:
ZOI>>Не, я видимо лучше тогда буду запускать через ShellExecuteEx из Windows/Temp, раз уж MS считает нормальным, чтоб другие приложения писали свои файлы в папку Windows. Просто удивился что All Users/Default не рассматриваются WinAPI как место для общего Temp-а. DB>Сама идея общего Temp-а ущербна по своей сути и указывает на большие архитектурные огрехи вашего приложения.
Хм, наверное вы правы. Если известен юзер, то можно в его Temp класть и запускать
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.