Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// policy.cpp : Implementation of CCRemoteDesktopSystemPolicy
#include "stdafx.h"
#include "rdsgp.h"
CCriticalSection CRemoteDesktopSystemPolicy::m_Lock;
/////////////////////////////////////////////////////////////////////////////
// CRemoteDesktopSystemPolicy
STDMETHODIMP CRemoteDesktopSystemPolicy::get_AllowGetHelp( /*[out, retval]*/ BOOL *pVal ) /*++
Routine Description:
Retrieve where system is allowed to be in 'GetHelp' mode.
Parameters:
pVal : Pointer to BOOL to receive whether system can be in GetHelp mode.
Returns:
S_OK or error code.
--*/ { HRESULT hRes = S_OK; *pVal = TSIsMachinePolicyAllowHelp(); return hRes; }
STDMETHODIMP CRemoteDesktopSystemPolicy::put_AllowGetHelp( /*[in]*/ BOOL Val ) /*++
Routine Description:
Set Allow to get help on local system, caller must be Administrator or member of Administrators group.
Parameters:
Val : TRUE to enable GetHelp, FALSE otherwise.
Returns:
S_OK HRESULT_FROM_WIN32( ERROR_ACCESS_DENIED ) error code.
--*/ { HRESULT hRes = S_OK;
hRes = ImpersonateClient();
if( SUCCEEDED(hRes) ) { hRes = HRESULT_FROM_WIN32( ConfigSystemGetHelp( Val ) ); EndImpersonateClient(); }
return hRes; }
STDMETHODIMP CRemoteDesktopSystemPolicy::get_RemoteDesktopSharingSetting( /*[out, retval]*/ REMOTE_DESKTOP_SHARING_CLASS *pLevel ) /*++
Routine Description:
Retrieve RDS sharing level on local system, function retrieve setting from Group Policy first, then from WINSTATION setting.
Parameters: pLevel : Pointer to REMOTE_DESKTOP_SHARING_CLASS to receive RDS sharing level.
Returns:
S_OK or error code.
--*/ { HRESULT hRes = S_OK;
hRes = HRESULT_FROM_WIN32( GetSystemRDSLevel( GetUserTSLogonId(), pLevel ) );
return hRes; }
STDMETHODIMP CRemoteDesktopSystemPolicy::put_RemoteDesktopSharingSetting( /*[in]*/ REMOTE_DESKTOP_SHARING_CLASS Level ) /*++
Routine Description:
Set machine level RDS sharing level, this level will override user setting.
Parameters: Level : new REMOTE_DESKTOP_SHARING_CLASS level
Returns:
S_OK or error code.
Note:
Function depends on platform and setting from Group Policy and TSCC settings.
--*/ { HRESULT hRes;
hRes = ImpersonateClient();
if( SUCCEEDED(hRes) ) { hRes = HRESULT_FROM_WIN32( ConfigSystemRDSLevel(Level) ); EndImpersonateClient(); }
return hRes; }
/////////////////////////////////////////////////////////////////////////////
// CRemoteDesktopUserPolicy
STDMETHODIMP CRemoteDesktopUserPolicy::get_AllowGetHelp( /*[out, retval]*/ BOOL* pVal ) /*++
Routine Description:
Retrieve whether currently logon user can 'GetHelp'
Parameters:
pVal : Pointer to BOOL to receive user's GetHelp setting.
Returns:
S_OK or error code
--*/ { HRESULT hRes; CComBSTR bstrUserSid;
hRes = ImpersonateClient();
GetUserSidString( bstrUserSid ); if( SUCCEEDED(hRes) ) { *pVal = IsUserAllowToGetHelp(GetUserTSLogonId(), (LPCTSTR) CComBSTRtoLPTSTR(bstrUserSid) ); EndImpersonateClient(); }
return hRes; }
STDMETHODIMP CRemoteDesktopUserPolicy::get_RemoteDesktopSharingSetting( /*[out, retval]*/ REMOTE_DESKTOP_SHARING_CLASS* pLevel ) /*++
Routine Description:
Retrieve currently logon user's desktop sharing level.
Parameters:
pLevel : Pointer to REMOTE_DESKTOP_SHARING_CLASS to receive user's RDS level.
Returns:
S_OK or error code.
--*/ { HRESULT hRes;
hRes = ImpersonateClient();
if( SUCCEEDED(hRes) ) { hRes = HRESULT_FROM_WIN32( GetUserRDSLevel(GetUserTSLogonId(), pLevel) ); EndImpersonateClient(); }
return hRes; }
|