Delphi 得到程序配置路径

class function TConfig.GXIniFolder: string;                                   
const
  GXEPath = '\GXExplorer';
  ShellFolderKey = '\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders';
var
  AppDataPath, FullPath: string;
  Buffer: array[0..MAX_PATH] of Char;
  Malloc: IMalloc;
  PIDL: PItemIDList;
  DefaultPath: Boolean;
begin
  AppDataPath := '';
  FullPath := '';
  DefaultPath := False;


  // Try to get path using API
  if Succeeded((SHGetSpecialFolderLocation(0, CSIDL_APPDATA, PIDL))) then
    if (SHGetPathFromIDList(PIDL, Buffer)) then
      if Succeeded(SHGetMalloc(Malloc)) then
      try
        AppDataPath := Buffer;
      finally
        Malloc.Free(PIDL);
        Malloc := nil;
      end;


  // API failed, so try to get path using registry
  if AppDataPath = '' then
    with {$IFDEF VER130}
    TRegistry.Create(KEY_READ){$ELSE}TRegistry.Create{$ENDIF} do
      if OpenKey(ShellFolderKey, False) then
        AppDataPath := ReadString('AppData');


  // Registry failed, so default to installation folder (no per-user settings)
  if AppDataPath = '' then
  begin
    AppDataPath := ExtractFileDir(ParamStr(0));
    DefaultPath := True;
  end;


  if not DefaultPath then FullPath := AppDataPath + GXEPath else
    FullPath := AppDataPath;
  if not DirectoryExists(FullPath) then
    if not CreateDir(FullPath) then
      FullPath := ExtractFileDir(ParamStr(0));
  Result := FullPath;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蚂蚁_CrkRes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值