これを行う最善の方法は何ですか?tmpnam() は、ドライブのルートにあるファイルへのパスを返します。Windows Vista では管理者権限が必要なため、これはオプションではありません。
5 に答える
GetTempPathとGetTempFileNameが機能するはずです。
Windows の環境変数 %TEMP% は、ユーザーの一時ディレクトリを指します。
マネージ C++ では、ユーザーの一時ディレクトリ ( Path::GetTempPath() を使用して見つけることができます) に一時ファイルを提供する Path::GetTempFileName() を呼び出すことができます。GetTempFileName() は基本的に、ファイル名として GUID を使用して %TEMP% パス内のファイルへのパスを提供するだけです。次に、そのパスを使用してファイルを作成し、必要な操作を行います。現在のプロセスの環境変数にアクセスできる任意の言語で同様のロジックを実行できます。
それが役立つことを願って、
マーティン。
相互運用性に関心がある場合は、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環境変数の内容のプレフィックスが付いたテンプレートを準備したことを示しています。
おそらく、kernel32.dll で Win32 メソッド GetTempPath() を使用できます。これは System.IO.Path.GetTempFileName() によって .NET にラップされます。
XP では、これは C:\Documents and Settings\username\Local Settings\Temp\ のパスを返すため、管理者権限は必要ありません。
環境変数 TEMP および TMP を、誰でも書き込み可能なディレクトリに設定してみましたか? XP で環境変数を変更するには (Vista には慣れていません)、システムのプロパティ、[詳細設定] タブ、[環境変数] ボタンに移動します。