Windows Server 2008(64bit)環境でGetTempPath()を使用したところ、以下のディレクトリパスが返ってきました。
C:\Users\ユーザ名\AppData\Local\Temp\1
期待していたのは、通常の一時ディレクトリのパス(C:\Users\ユーザ名\AppData\Local\Temp)ですが、
この動作は正常なのでしょうか?
アプリはWow64環境で動作をしています。
Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
コードに問題がある気がしますので簡単な再現コードを作ってもらってよいでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
返信ありがとうございます。
コードは簡単で取得後すぐに出力しても”:\Users\ユーザ名\AppData\Local\Temp\1”
になります。謎です・・・・・
TCHAR str[MAX_PATH];
GetTempPath(MAX_PATH, str);
DPRINTF(_T("GetTempPath = %s \n"),str);
コードは簡単で取得後すぐに出力しても”:\Users\ユーザ名\AppData\Local\Temp\1”
になります。謎です・・・・・
TCHAR str[MAX_PATH];
GetTempPath(MAX_PATH, str);
DPRINTF(_T("GetTempPath = %s \n"),str);
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
修正、少し間違えていました。終端に\が入ります。以下のパスがGetTempPath()で取得したパスです。
C:\Users\ADMINI~1\AppData\Local\Temp\1\
環境がおかしいのかと思いましたが、他の2008環境でも同じ結果になりました。
C:\Users\ADMINI~1\AppData\Local\Temp\1\
環境がおかしいのかと思いましたが、他の2008環境でも同じ結果になりました。
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
ちょっと詳細な原因などは分からないのですが下記の場所でも似たような話が書かれていますね。
http://shimaji.exblog.jp/13178677/
リモートアクセスしている場合に、Temp\(数字)\の様になるらしい…というくらいしか分からないのですが…
http://shimaji.exblog.jp/13178677/
リモートアクセスしている場合に、Temp\(数字)\の様になるらしい…というくらいしか分からないのですが…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
なるほど。
リモートアクセスなら変わるかも知れませんね。
だとしたら、そのまま素直に使うのが良いと思います。
リモートアクセスなら変わるかも知れませんね。
だとしたら、そのまま素直に使うのが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
ありがとうございますm(_ _)m
リモートでアクセスしてました。
自分でも調べてみたところ、同じ現象が発生するユーザが見つかりました。また2003でも発生しました。
http://social.technet.microsoft.com/For ... 819775194/
取得したパスの文字列を操作して対応することにします。
リモートでアクセスしてました。
自分でも調べてみたところ、同じ現象が発生するユーザが見つかりました。また2003でも発生しました。
http://social.technet.microsoft.com/For ... 819775194/
取得したパスの文字列を操作して対応することにします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
わざわざシステムが接続リモートユーザー別に用意しているものを書き換えるのは避けるべきです。松田 さんが書きました:ありがとうございますm(_ _)m
リモートでアクセスしてました。
自分でも調べてみたところ、同じ現象が発生するユーザが見つかりました。また2003でも発生しました。
http://social.technet.microsoft.com/For ... 819775194/
取得したパスの文字列を操作して対応することにします。
TMPですのでその接続しているユーザーが使用して終わりですよね?
【追記】
恒久的に使うものやユーザー別で困るものはTMPに置くべきではありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
いえ、temp配下に一時ファイルを保存するのが目的ではありません。
クリーナのようなアプリを作成しているのでtemp配下の一時ファイルを削除します。
実際にサーバOS環境でこのような機能をユーザが使うかは、?ですがバグの調査を行ってたときに不思議に思ったので質問をしました。
クリーナのようなアプリを作成しているのでtemp配下の一時ファイルを削除します。
実際にサーバOS環境でこのような機能をユーザが使うかは、?ですがバグの調査を行ってたときに不思議に思ったので質問をしました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
なるほど。松田 さんが書きました:いえ、temp配下に一時ファイルを保存するのが目的ではありません。
クリーナのようなアプリを作成しているのでtemp配下の一時ファイルを削除します。
実際にサーバOS環境でこのような機能をユーザが使うかは、?ですがバグの調査を行ってたときに不思議に思ったので質問をしました。
サーバー環境でクリーナー動作をした場合どの様な害があるか想像もつかないのですが、なんとか動くようにしておくよりサーバーのリモートアクセス中で有ることを警告してユーザーにどうするかを決めてもらったほうが良いと思います。
あるいは動かないほうが良いかも知れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて
ご教授ありがとうございます。
確かに、サーバ環境でのtempファイル配下の削除は、現動作中のプロセスに影響与えそうで怖いですね。
仕様に関わるとこなので、もう一度考えて修正したいとおもいます。
トピックを解決させていただきます。
確かに、サーバ環境でのtempファイル配下の削除は、現動作中のプロセスに影響与えそうで怖いですね。
仕様に関わるとこなので、もう一度考えて修正したいとおもいます。
トピックを解決させていただきます。