Yes I am using SHGetSpecialFolderLocation only. I am using the following code to get the desktop directory

LPITEMIDLIST itemList;
HRESULT hres;
hres = SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &itemList);

if(hres != S_OK)
{
return hres;
}

char desktopDir[MAX_PATH];
if(!SHGetPathFromIDList(itemList, desktopDir))
{
}

aftre this I am using desktopDir and converiutng it in to wchar_t. It is working perfectly in Windows English system. Its giving problem only in Japanese system.