記事カテゴリ

ユーザー機能


 2024年4月27日(土) 15:21 JST

[Delphi] OS上の特別なフォルダの場所を取得する(with registry)

  • 投稿者:
  • 表示回数
    3,994

以下のサンプルコードを参考にしてください。
レジストリからOS上の特別なフォルダ(デスクトップやProgram Filesなど)を取得します。
TRegistryを使用しているので、「Registry」をusesに追加するのを忘れないでください。

const
  cShellAppData = 'AppData'; 
  cShellCache = 'Cache'; 
  cShellCookies = 'Cookies'; 
  cShellDesktop = 'Desktop'; 
  cShellFavorites = 'Favorites'; 
  cShellFonts = 'Fonts'; 
  cShellHistory = 'History'; 
  cShellLocalApp = 'Local AppData'; 
  cShellNetHood = 'NetHood'; 
  cShellPersonal = 'Personal'; 
  cShellPrintHood = 'PrintHood'; 
  cShellPrograms = 'Programs'; 
  cShellRecent = 'Recent'; 
  cShellSendTo = 'SendTo'; 
  cShellStartMenu = 'Start Menu'; 
  cShellStartUp = 'Startup'; 
  cShellTemplates = 'Templates'; 

function GetShellFolder (const folder: string):
string;
const
  cWin32 = 'SOFTWAREMicrosoftWindowsCurrentVersion';
  cSHellPrefix = 'ExplorerShell Folders'; 
var
  reg: TRegistry; 
begin
  Result:= ''; 
  reg:= TRegistry.Create; 
  try 
    reg.Rootkey := 'HKEY_CURRENT_USER'; 
    // NTと95/98で違いはありません
    if reg.OpenKey (cWin32 + cShellPrefix, false) then
    begin
      Result:= reg.ReadString(folder) + '';
    end;
  finally
    reg.Free;
  end;
end;

以下のように使用します。(Program Filesを取得する場合)

  folder := GetShellFolder(cShellPrograms);

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_del0016

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。