1

ShGetFolderPathを使用して、ユーザー プロファイル フォルダーのパスを特定しようとしています。ドキュメントには、CSIDL_PROFILES がこのフォルダーを定義すると記載されています。

CSIDL_PROFILES (0x003e)

バージョン 6.0。ユーザー プロファイル フォルダーを含むファイル システム ディレクトリ。一般的なパスは C:\Documents and Settings です。

CSIDL_PROFILESVisual Studio 2005 SP1 を使用していますが、Platform SDK のインクルード ファイルで定数の定義が見つかりません。Platform SDK の新しいバージョンが必要ですか?

そこで、シンボルの代わりに ID 0x3e を使用して、さらに実験を行いました。ただし、0x3e は、CSIDL_* 引数を受け入れるシェル関数に対する有効な引数ではないようです (無効な引数エラーが返されます)。

したがって、CSIDL_PROFILES は有効な引数ではなく、このシンボルについて言及している MSDN ページの少なくとも一部は間違っていると思います。Win32/MSDN のドキュメントを何年も扱ってきましたが、似たような状況を思い出すことはできません。

4

3 に答える 3

0

You should be using GetProfilesDirectory() but if what you really want is the CSIDL of a different user you should call SHGetFolderPath with their token. (If you don't have their token you need to use a hacky workaround)

于 2012-07-28T13:43:03.470 に答える
0

これは価値がないことに誰かが気づいたときに削除されたと思います。とにかくそれで何ができますか?各ユーザーのプロファイルが実際にこのディレクトリに存在するかどうかを判断する必要があります。ただし、通常はユーザーごとにこれをチェックしているため、デフォルトが必要になる唯一のポイントは、新しいユーザー プロファイルを作成するときです。とにかく、これは Windows の内部コードです。

于 2009-06-29T09:57:02.523 に答える
0

CSIDLのMSDN ドキュメントには記載されていないため、新しいバージョンの PSDK が役立つ可能性は低いです。

あなたは明らかに自分でそれを行うことができます:

#define CSIDL_PROFILES 0x003E

...しかし、MSによって完全に文書化されていないように見えるという事実を考慮すると、私が推奨するものではありません.

于 2009-06-25T21:36:10.287 に答える