I want to understand what is the difference between these functions and which of them should I use to work with paths?
For example: I want "C: \ Temp" + ".. \ Folder" = "C: \ Folder"
thanks
For this you need to use PathCombine .
Combines two lines that represent well-formed paths into one path; also combines any relative elements of the path.
PathAppend specifically prohibits relative path qualifiers according to MSN docs:
The path specified in pszPath cannot start with ".. \" or ". \" To produce a relative path string.
PathCanonicalize () may be worth mentioning if the strings are already concatenated.