Вы могли бы:
- как предложено St Shadow, положитесь на некоторую переменную окружения, такую как% WINDIR% или% SYSTEMROOT%, добавьте "\ temp" в конце и используйте это.
или передайте это значение вашему приложению в качестве переменной, используя аргумент командной строки для JVM, например,
-Dmytempdir=%WINDIR%\temp
Как вы упоминаете, пользователь может изменить значения любого из этих
переменные, использующие System -> Переменные среды, но я не думаю, что они будут иметь какое-либо влияние на систему до перезагрузки в любом случае (...?).
Или ...
- попробуйте прочитать значение из реестра, используя какое-то грязное использование java.util.prefs.Preferences или что-то в этом духе. На моей машине это выглядит так, как будто значение, которое вы ищете, содержится в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\TEMP
.
Скорее всего, это будет довольно грязно, и я не знаю, даст ли класс Preferences доступ к ключу, который вам нужно прочитать. Опять же, вы мало что можете сделать, чтобы пользователь изменил значение реестра, если бы он действительно этого хотел, но опять же я сомневаюсь, что это повлияет до перезагрузки и, вероятно, повлияет не только на ваше приложение.
Cheers,
--J