Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
松田

Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#1

投稿記事 by 松田 » 7年前

Windows Server 2008(64bit)環境でGetTempPath()を使用したところ、以下のディレクトリパスが返ってきました。
C:\Users\ユーザ名\AppData\Local\Temp\1
期待していたのは、通常の一時ディレクトリのパス(C:\Users\ユーザ名\AppData\Local\Temp)ですが、
この動作は正常なのでしょうか?

アプリはWow64環境で動作をしています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 8年前
住所: 東海地方
連絡を取る:

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#2

投稿記事 by softya(ソフト屋) » 7年前

コードに問題がある気がしますので簡単な再現コードを作ってもらってよいでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

松田

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#3

投稿記事 by 松田 » 7年前

返信ありがとうございます。
コードは簡単で取得後すぐに出力しても”:\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()を使ったときのパスについて

#4

投稿記事 by 松田 » 7年前

修正、少し間違えていました。終端に\が入ります。以下のパスがGetTempPath()で取得したパスです。
C:\Users\ADMINI~1\AppData\Local\Temp\1\

環境がおかしいのかと思いましたが、他の2008環境でも同じ結果になりました。

アバター
沖 滉均
記事: 237
登録日時: 8年前
住所: K県F市

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#5

投稿記事 by 沖 滉均 » 7年前

ちょっと詳細な原因などは分からないのですが下記の場所でも似たような話が書かれていますね。
http://shimaji.exblog.jp/13178677/

リモートアクセスしている場合に、Temp\(数字)\の様になるらしい…というくらいしか分からないのですが…
There is no royal road to learning.
codeタグで指定できる言語
画像

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 8年前
住所: 東海地方
連絡を取る:

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#6

投稿記事 by softya(ソフト屋) » 7年前

なるほど。
リモートアクセスなら変わるかも知れませんね。
だとしたら、そのまま素直に使うのが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

松田

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#7

投稿記事 by 松田 » 7年前

ありがとうございますm(_ _)m
リモートでアクセスしてました。
自分でも調べてみたところ、同じ現象が発生するユーザが見つかりました。また2003でも発生しました。
http://social.technet.microsoft.com/For ... 819775194/

取得したパスの文字列を操作して対応することにします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 8年前
住所: 東海地方
連絡を取る:

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#8

投稿記事 by softya(ソフト屋) » 7年前

松田 さんが書きました:ありがとうございますm(_ _)m
リモートでアクセスしてました。
自分でも調べてみたところ、同じ現象が発生するユーザが見つかりました。また2003でも発生しました。
http://social.technet.microsoft.com/For ... 819775194/

取得したパスの文字列を操作して対応することにします。
わざわざシステムが接続リモートユーザー別に用意しているものを書き換えるのは避けるべきです。
TMPですのでその接続しているユーザーが使用して終わりですよね?

【追記】
恒久的に使うものやユーザー別で困るものはTMPに置くべきではありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

松田

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#9

投稿記事 by 松田 » 7年前

いえ、temp配下に一時ファイルを保存するのが目的ではありません。
クリーナのようなアプリを作成しているのでtemp配下の一時ファイルを削除します。

実際にサーバOS環境でこのような機能をユーザが使うかは、?ですがバグの調査を行ってたときに不思議に思ったので質問をしました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 8年前
住所: 東海地方
連絡を取る:

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#10

投稿記事 by softya(ソフト屋) » 7年前

松田 さんが書きました:いえ、temp配下に一時ファイルを保存するのが目的ではありません。
クリーナのようなアプリを作成しているのでtemp配下の一時ファイルを削除します。

実際にサーバOS環境でこのような機能をユーザが使うかは、?ですがバグの調査を行ってたときに不思議に思ったので質問をしました。
なるほど。
サーバー環境でクリーナー動作をした場合どの様な害があるか想像もつかないのですが、なんとか動くようにしておくよりサーバーのリモートアクセス中で有ることを警告してユーザーにどうするかを決めてもらったほうが良いと思います。
あるいは動かないほうが良いかも知れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

松田

Re: Windows Server 2008(64bit)環境でGetTempPath()を使ったときのパスについて

#11

投稿記事 by 松田 » 7年前

ご教授ありがとうございます。
確かに、サーバ環境でのtempファイル配下の削除は、現動作中のプロセスに影響与えそうで怖いですね。
仕様に関わるとこなので、もう一度考えて修正したいとおもいます。

トピックを解決させていただきます。

閉鎖

“C言語何でも質問掲示板” へ戻る