2

ユーザー 'LocalService' で Java アプリケーションをサービスとして実行する場合、一時ディレクトリ ("java.io.tmpdir") は 'c:/windows/temp' を指します (たとえば)。

通常、Java アプリケーションを実行すると、代わりに「c:/documents and settings/user/local settings/temp」が返されます。

アプリケーションが正常に実行されているときに、ユーザーに依存しない一時フォルダー 'c:/windows/temp' を特定するにはどうすればよいですか?

ありがとうございます、GHad

4

4 に答える 4

1

これを行う「クリーンな」方法があるかどうかはわかりません。

この状況では、Java アプリケーション専用のディレクトリーを作成し、それをプロパティー・ファイルで参照することになるでしょう。

于 2009-11-10T10:50:53.410 に答える
1

あなたは出来る:

  • St Shadow で提案されているように、%WINDIR% や %SYSTEMROOT% などの環境変数に依存し、最後に「\temp」を追加して、これを使用します。
  • または、JVM へのコマンドライン引数を使用して、この値を変数としてアプリに渡します。

    -Dmytempdir=%WINDIR%\temp

あなたが言及したように、ユーザーは System -> Environment Variables を使用してこれらの変数のいずれかの値を変更できますが、とにかく再起動するまでシステムに影響を与えるとは思いません (...?)。

または...

  • java.util.prefs.Preferences などの厄介な使用法を使用して、レジストリから値を読み取ってみてくださいHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\TEMP

これは非常に厄介な作業になる可能性が高く、読み取る必要があるキーに Preferences クラスでアクセスできるかどうかはわかりません。繰り返しますが、ユーザーが本当に望んでいる場合でも、ユーザーがレジストリ値を変更することについてできることはあまりありませんが、再起動後まで影響があるとは思えず、おそらくアプリ以外にも影響があるでしょう.

乾杯、--J

于 2009-11-10T14:08:43.660 に答える
0

独自の一時フォルダーを作成し、deleteOnExit()メソッドを使用して、アプリケーションの終了時にこのフォルダーが確実に削除されるようにするだけです。

于 2009-11-10T11:19:29.343 に答える