3

これを行う最善の方法は何ですか?tmpnam() は、ドライブのルートにあるファイルへのパスを返します。Windows Vista では管理者権限が必要なため、これはオプションではありません。

4

5 に答える 5

6

GetTempPathGetTempFileNameが機能するはずです。

于 2008-09-18T08:50:37.903 に答える
1

Windows の環境変数 %TEMP% は、ユーザーの一時ディレクトリを指します。

マネージ C++ では、ユーザーの一時ディレクトリ ( Path::GetTempPath() を使用して見つけることができます) に一時ファイルを提供する Path::GetTempFileName() を呼び出すことができます。GetTempFileName() は基本的に、ファイル名として GUID を使用して %TEMP% パス内のファイルへのパスを提供するだけです。次に、そのパスを使用してファイルを作成し、必要な操作を行います。現在のプロセスの環境変数にアクセスできる任意の言語で同様のロジックを実行できます。

それが役立つことを願って、

マーティン。

于 2008-09-18T08:53:29.723 に答える
0

相互運用性に関心がある場合は、tmpnamのマニュアルページに次のように記載されています。

tmpnamのマニュアルページ

BUGS
       Never use this function. Use mkstemp(3) instead.

mkstempのマニュアルページ

SYNOPSIS
       #include <stdlib.h>

       int mkstemp(char *template);

DESCRIPTION
       The mkstemp() function generates a unique temporary file name from template.  The last six characters of template must be
       XXXXXX and these are replaced with a string that makes the filename unique. The file is then created with mode read/write

ただし、これらはすべて、TMP環境変数の内容のプレフィックスが付いたテンプレートを準備したことを示しています。

于 2008-09-18T09:18:05.060 に答える
0

おそらく、kernel32.dll で Win32 メソッド GetTempPath() を使用できます。これは System.IO.Path.GetTempFileName() によって .NET にラップされます。

XP では、これは C:\Documents and Settings\username\Local Settings\Temp\ のパスを返すため、管理者権限は必要ありません。

于 2008-09-18T08:54:13.357 に答える
0

環境変数 TEMP および TMP を、誰でも書き込み可能なディレクトリに設定してみましたか? XP で環境変数を変更するには (Vista には慣れていません)、システムのプロパティ、[詳細設定] タブ、[環境変数] ボタンに移動します。

于 2008-09-18T08:48:57.847 に答える