public bool Create(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;
}
// make sure desktop doesnt already exist.
if (Exists(name))
{
// it exists, so open it.
return Open(name);
}
// attempt to create desktop.
DesktopHandle = CreateDesktop(name, IntPtr.Zero, IntPtr.Zero, 0, AccessRights, IntPtr.Zero);
DesktopName = name;
// something went wrong.
if (DesktopHandle == IntPtr.Zero) return false;
return true;
}