////////////////////////////////////////////////////////////////////////////// // // CWinStation.hpp // Win32::Daemon Perl extension windows station class header file // // Copyright (c) 1998-2008 Dave Roth // Courtesy of Roth Consulting // http://www.roth.net/ // // This file may be copied or modified only under the terms of either // the Artistic License or the GNU General Public License, which may // be found in the Perl 5.0 source kit. // // 2008.03.24 :Date // 20080324 :Version ////////////////////////////////////////////////////////////////////////////// #ifndef _CWINSTATION_H_ #define _CWINSTATION_H_ #define WINSTA_ALL ( WINSTA_ACCESSCLIPBOARD \ | WINSTA_CREATEDESKTOP \ | WINSTA_ACCESSGLOBALATOMS \ | WINSTA_ENUMDESKTOPS \ | WINSTA_ENUMERATE \ | WINSTA_EXITWINDOWS \ | WINSTA_READATTRIBUTES \ | WINSTA_READSCREEN \ | WINSTA_WRITEATTRIBUTES \ | DELETE \ | READ_CONTROL \ | WRITE_DAC \ | WRITE_OWNER ) #define DESKTOP_ALL ( DESKTOP_CREATEMENU \ | DESKTOP_CREATEWINDOW \ | DESKTOP_ENUMERATE \ | DESKTOP_HOOKCONTROL \ | DESKTOP_JOURNALPLAYBACK \ | DESKTOP_JOURNALRECORD \ | DESKTOP_READOBJECTS \ | DESKTOP_SWITCHDESKTOP \ | DESKTOP_WRITEOBJECTS \ | DELETE \ | READ_CONTROL \ | WRITE_DAC \ | WRITE_OWNER ) #define GENERIC_ACCESS ( GENERIC_READ \ | GENERIC_WRITE \ | GENERIC_EXECUTE \ | GENERIC_ALL ) class CWinStation { public: CWinStation(); ~CWinStation(); BOOL Set( LPCTSTR pszWindowStation, LPCTSTR pszDesktop ); BOOL Restore(); SID *SetSid( SID *pSid ); private: enum PermissionType { eWindowStation, eDesktop }; void GetThisStation(); BOOL AddSecurityPrivileges( HANDLE hHandle, SID *pSid, PermissionType ePermType ); HWINSTA m_hWinStation; DWORD m_dwThreadId; HDESK m_hDesktop; SID *m_pSid; }; #endif // _CWINSTATION_H_