All Usersフォルダの取得方法は?

解決


高崎  2005-01-31 08:53:46  No: 12963  IP: [192.*.*.*]

All Usersフォルダを取得しようとする場合、Delphi7ではSHGetSpecialFolderLocationにCSIDL_COMMON_APPDATAを渡してもだめで、Shlobj.pasを確認しても定義されていないようです。
そこでShlobj.pasを参考に$0023を渡すと取得できたのですが、こんな方法を採っても良いものでしょうか。Delphi6ではCSIDL_COMMON_APDATAが定義されているそうなので、Delphi6のshlobj.pasでCSIDL_COMMON_APDATA=$0023と定義されているかどうかも知りたいのですが。

編集    削除
OSしだい  2005-01-31 11:50:26  No: 12964  IP: [192.*.*.*]

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

編集    削除
にしの  2005-01-31 19:03:59  No: 12965  IP: [192.*.*.*]

shfolder.dllを配布すればNT4.0や95系でも動きますよ。
2000以降には存在するDLLなので、インストーラの設定で切り替えてインストールしてください。

編集    削除
高崎  2005-02-01 09:39:12  No: 12966  IP: [192.*.*.*]

フォローありがとうございます。
Delphi7のShFolder.pasに定義されているのも確認しました。ご教示頂いたMSDNの文書を何故だか探せなかったので、つまづいておりました。助かりました。
Windowsのバージョン違いによる動作不可に関しては、別の方から「Windows InstallerがそのDLLを必要とするので、WindowsInstallerのWin98/95サポートを有効にしてWindowsInstallerでインストールすれば勝手に入る」とのアドバイスも頂きましたので、それを確認してその方向で考えたいと思います。
ありがとうございました。

編集    削除