Windowsのさまざまなフォルダ名を取得する
WIndowsがインストールされているフォルダや、インターネットキャッシュフォルダ等がどこにあるのかを取得します。
この例では全てグローバル変数に格納していますが、必要に応じて変更してください。
//
// Windowsの様々なフォルダ名を得る
// ログオンアカウント環境毎の取得ができます
// Windows95/98/NT4.0
//
var
WinDir, // Windowsがインストールされているフォルダ名
AppDataDir, // アプリケーションデータフォルダ
IECacheDir, // インターネットキャッシュフォルダ
CookiesDir, // Cookiesデータフォルダ
DeskTopDir, // デスクトップフォルダ
FavoritesDir, // インターネットお気に入りのフォルダ
FontsDir, // フォントフォルダ
HistoryDir, // 履歴フォルダ
NetHoodDir, // 何でしょうね?わかりまん
PersonalDir, // My Documentsフォルダ
ProgramsDir, // スタートメニュー・プログラムのフォルダ
RecentDir, // 最近使ったファイルのフォルダ
SendToDir, // 送るのショートカットフォルダ
StartMenuDir, // スタートメニューのフォルダ
StartUpDir, // スタートメニュー・プログラム・スタートアップのフォルダ
TemplatesDir, // 新規作成のテンプレートフォルダ
TempDir: string; // 作業フォルダ
procedure GetWinWorkDir;
var
wdir: PChar;
temp: array[0..260] of char;
reg: TRegistry;
begin
// Windowsフォルダ
wdir := @temp;
// Win32API
if GetWindowsDirectory(wdir, 260) = 0 then
WinDir := 'c:\WIndows' // 取得できなかった場合
else
WinDir := wdir;
// Windows作業フォルダ
wdir := @temp;
// Win32API
if GetTempPath(260, wdir) = 0 then
TempDir := WinDir + '\Temp' // 取得できなかった場合
else
TempDir := wdir;
// ログオンアカウント毎に環境が異なる場合でも、レジストリを参照することで
// その環境でのフォルダを取得できます
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False) then
begin
try
AppDataDir := reg.ReadString('AppData');
IECacheDir := reg.ReadString('Cache');
CookiesDir := reg.ReadString('Cookies');
DeskTopDir := reg.ReadString('Desktop');
FavoritesDir := reg.ReadString('Favorites');
FontsDir := reg.ReadString('Fonts');
HistoryDir := reg.ReadString('History');
NetHoodDir := reg.ReadString('NetHood');
PersonalDir := reg.ReadString('Personal');
ProgramsDir := reg.ReadString('Programs');
RecentDir := reg.ReadString('Recent');
SendToDir := reg.ReadString('SendTo');
StartMenuDir := reg.ReadString('Start Menu');
StartUpDir := reg.ReadString('Startup');
TemplatesDir := reg.ReadString('Templates');
finally
reg.CloseKey;
end;
end;
reg.Free;
// 取得できなかった場合の処理(必要な場合)
if IECacheDir = '' then
IECacheDir := WinDir + '\Temporary Internet Files';
// 以下必要に応じて追加する
end;