Windowsユーザーのプロファイルパスの親フォルダーを取得しようとしています。しかし、これを使用してこれを取得するための「パラメーター」が見つかりませんでした。SHGetSpecialFolderPath
これまでのところ、を使用していCSIDL_PROFILE
ます。
予想されるパス:
Win7-「C:\Users」
Windows XP-「C:\DocumentsandSettings」
Windowsユーザーのプロファイルパスの親フォルダーを取得しようとしています。しかし、これを使用してこれを取得するための「パラメーター」が見つかりませんでした。SHGetSpecialFolderPath
これまでのところ、を使用していCSIDL_PROFILE
ます。
予想されるパス:
Win7-「C:\Users」
Windows XP-「C:\DocumentsandSettings」
ユーザーへのパスを表示する以外のほとんどの目的では、問題のパスに追加する"\\.."
(または"..\\"
バックスラッシュで終わる場合)ように機能する必要があります。
シェルライブラリバージョン6.0を使用すると、この値は削除されました(ここを参照)。独自の回避策を使用する必要があります。CSIDL_PROFILES
(混同しないでくださいCSIDL_PROFILE
)必要なものが得られます。
以前のバージョンでは、可能なパス区切り文字を探すなど、独自の回避策を実装する必要があります。つまり\
、/
Windowsで、最後の文字列で文字列を終了する必要があります。これの単純なバージョンでは、strrchr
(またはwcsrchr
)を使用して円記号を見つけ、文字列が書き込み可能であると想定して、その場所で文字列を終了できます。
例:
char* path;
// Retrieve the path at this point, e.g. "C:\\Users\\username"
char* lastSlash = strrchr(path, '\\');
if(!lastSlash)
lastSlash = strrchr(path, '/');
if(lastSlash)
*lastSlash = 0;
またはもちろんGetProfilesDirectory
(それは私を逃した)あなたがこの答えへのコメントで指摘した。