public bool Open(string name)
{
// make sure object isnt disposed.
CheckDisposed();
// close the open desktop.
if (DesktopHandle != IntPtr.Zero)
{
// attempt to close the desktop.
if (!Close()) return false;
}
// open the desktop.
DesktopHandle = OpenDesktop(name, 0, true, AccessRights);
// something went wrong.
if (DesktopHandle == IntPtr.Zero) return false;
DesktopName = name;
return true;
}