想用C#得到The All Users Desktop(Public\Desktop)的路径。
原来以为很简单,然而Environment.GetFolderPath(Environment.SpecialFolder.Desktop)只能得到当前用户的桌面路径。到最后,没有办法,只能调用C++的函数:
[DllImp
private static extern int SHGetFolderPath ( IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath );
private const int MAX_PATH = 260;
private const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019;
public static string GetAllUsersDesktopFolderPath ( )
{
StringBuilder sbPath = new StringBuilder(MAX_PATH);
SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_DESKTOPDIRECTORY, IntPtr.Zero, 0, sbPath);
return sbPath.ToString();
}