private IShellFolder GetIShellFolder() {
IShellFolder desktop = Shell32.SHGetDesktopFolder();
IntPtr desktopPidl;
Shell32.SHGetSpecialFolderLocation(IntPtr.Zero, CSIDL.DESKTOP, out desktopPidl); ;
if (Shell32.ILIsEqual(Pidl, desktopPidl)) {
return desktop;
}
else {
IntPtr result;
desktop.BindToObject(Pidl, IntPtr.Zero, typeof(IShellFolder).GUID, out result);
return (IShellFolder)Marshal.GetTypedObjectForIUnknown(result, typeof(IShellFolder));
}
}
}