All Usersフォルダを取得しようとする場合、Delphi7ではSHGetSpecialFolderLocationにCSIDL_COMMON_APPDATAを渡してもだめで、Shlobj.pasを確認しても定義されていないようです。
そこでShlobj.pasを参考に$0023を渡すと取得できたのですが、こんな方法を採っても良いものでしょうか。Delphi6ではCSIDL_COMMON_APDATAが定義されているそうなので、Delphi6のshlobj.pasでCSIDL_COMMON_APDATA=$0023と定義されているかどうかも知りたいのですが。
Delphi4でもDelphi6でもShlobj.pasにはCSIDL_COMMON_APPDATAは定義されていないですよ。
Delphi6のShFolder.pasには $0023と値が定義されていますけどね。
そもそもCSIDL_COMMON_APDATAなどの定数値は、Delphiのバージョンではなくて OSのバージョンに依存するわけで、Windows Version5以降(Win2000,XP)ならば
CSIDL_COMMON_APPDATA = $0023
と決まってます。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/reference/enums/csidl.asp
shfolder.dllを配布すればNT4.0や95系でも動きますよ。
2000以降には存在するDLLなので、インストーラの設定で切り替えてインストールしてください。
フォローありがとうございます。
Delphi7のShFolder.pasに定義されているのも確認しました。ご教示頂いたMSDNの文書を何故だか探せなかったので、つまづいておりました。助かりました。
Windowsのバージョン違いによる動作不可に関しては、別の方から「Windows InstallerがそのDLLを必要とするので、WindowsInstallerのWin98/95サポートを有効にしてWindowsInstallerでインストールすれば勝手に入る」とのアドバイスも頂きましたので、それを確認してその方向で考えたいと思います。
ありがとうございました。