2009-08-24 18 views
13

Cのユーザの一時フォルダのパスをどのように取得できますか?私のプログラムはWindows VistaとXP上で動かなければならず、彼らは異なる一時的なパスを持っています。互換性を失うことなくどのように入手できますか?Windowsでユーザの一時フォルダのパスを取得する

+2

は、Windowsソリューションでのみ興味があるなら、あなたはあなたの質問のタイトルにそれを配置する必要があります。 –

答えて

6

GetTempPath関数は、一時ファイル用に指定されたディレクトリのパスを取得します。この関数は、GetTempDrive関数に取って代わるものです。

DWORD GetTempPath(

DWORD nBufferLength, // size, in characters, of the buffer 
LPTSTR lpBuffer // address of buffer for temp. path 
); 

パラメータ

nBufferLength

lpBufferで識別される文字列バッファの文字で、サイズを指定します。一時ファイルのパスを指定するNULLで終わる文字列を受け取り、文字列バッファに

lpBuffer

ポイント。

戻り値関数が成功した場合、戻り値は文字の長さは、lpBufferにコピーされた文字列の終端のNULL文字を含まない、ある

値。戻り値がnBufferLengthより大きい場合、戻り値はパスを保持するために必要なバッファのサイズです。 関数が失敗した場合、戻り値はゼロです。拡張エラー情報を取得するには、GetLastErrorを呼び出します。

は、次のように

GetTempPath関数は、一時ファイルのパスを取得します備考:

  1. TMP環境変数で指定されたパスを。
  2. TMPが定義されていない場合は、TEMP環境変数で指定されたパス。
  3. TMPとTEMPの両方が定義されていない場合、現在のディレクトリ。
+3

内容をコピーして貼り付けるのではなく、MSDNのドキュメントにリンクする必要があります – JaredPar

+4

私は実際に情報とリンクの両方に感謝しています。リンクの問題は、時間の経過とともに腐敗することです。 –

+0

-1は、それが引用であることを示さないため、引用のソースを引用しないために、古い情報を貼り付けるために使用されます。 –

1

ユーザーが管理者権限を持っていない限り、GetTempPathはVistaでは動作しません。私は今、私のアプリの一つでこの問題にぶち当たっています。

+0

これは質問に対する答えを提供しません。著者からの批判または明確化要求 を投稿するには、投稿の下にコメントを残してください。 –

2

GetTempPath()を使用して、一時ファイル用に指定されたディレクトリのパスを取得します。

wstring TempPath; 
wchar_t wcharPath[MAX_PATH]; 
if (GetTempPathW(MAX_PATH, wcharPath)) 
    TempPath = wcharPath; 
3
#include <iostream> 
#include <string> 

int main(int argc, char* argv[]){ 

    std::cout << getenv("TEMP") << std::endl; 

    return 0; 
} 
関連する問題