+ OleInitialize(NULL);
Any particular reason you're using this instead of CoInitialize? I don't think there's anything wrong with it, but CoInitialize is more common.
+ todo_wine + ok(cat==KF_CATEGORY_FIXED, "invalid folder category: %d\n", cat);
You'd be using cat uninitialized when the function is not implemented in Wine. I suggest initializing it to 0 or something. Same with redirectionCapabilities later.
+ ok(lstrcmpW(sWinDir, folderPath)==0, "invalid path returned: %s\n", wine_dbgstr_w(folderPath));
It might be useful to print sWinDir as well. If there's some situation where it's the right path but not quite the same string, that'd be good to know.
+ /* try to set new path */ + hr = IKnownFolder_SetPath(folder, 0, sTempDir); + todo_wine + ok(hr == S_OK, "setting path failed: 0x%08x\n", hr);
I'd suggest making up + registering your own known folder to test this feature, rather than using a standard one. I worry someone could end up with a broken Windows install if we fail to put it back somehow.