2020-09-30 17:12:29 +02:00

367 lines
9.1 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
secmgrp.h
Abstract:
This module contains definitions private to the
Security Manager utility.
Author:
Jim Kelly (JimK) 22-Sep-1994
Revision History:
--*/
#ifndef UNICODE
#define UNICODE
#endif
#ifndef RC_INVOKED
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntlsa.h>
#include <string.h>
#endif //RC_INVOKED
#include <windows.h>
#include <stdlib.h>
#include <commdlg.h>
#include <secmgr.h>
#include <secmgrid.h>
#include <stringid.h>
//
// When all done debugging, comment out this symbol definition
//
#define SECMGR_DEBUG
#ifndef SECMGR_DEBUG
#define SECMGR_STATIC static
#else // NOT SECMGR_DEBUG
#define SECMGR_STATIC
#endif //SECMGR_DEBUG
////////////////////////////////////////////////////////////////////////
// //
// Security Manager-Wide Defines //
// //
////////////////////////////////////////////////////////////////////////
//
// Maximum number of bytes allowed in a string read from the resource
// file (bytes). The short string is for cases where we know the
// string is short - even when localized to other languages. Generally,
// this is used in cases where the string will be displayed in dialog
// controls with limited space.
//
#define SECMGR_MAX_RESOURCE_STRING_LENGTH (1024)
#define SECMGR_SHORT_RESOURCE_STRING_LENGTH (100)
//
// Maximum length of a line in the Item-list listbox
// The real max length is considerably less than this, but
// this is what we use for buffer allocations.
//
#define SECMGRP_MAX_LIST_BOX_LINE_LENGTH (800)
//
// The maximum number of smedlys and areas that the Security Manager will
// support.
//
#define SECMGRP_MAX_SMEDLYS (16)
#define SECMGRP_MAX_AREAS (16)
//
// Maximum number of well-known accounts allowed in
// SECMGRP_ACCOUNTS data structures
//
#define SECMGRP_MAX_WELL_KNOWN_ACCOUNTS (9)
//
// Location of Security Manager state in registry.
// This key name is relative to RTL_REGISTRY_CONTROL.
//
#define SECMGRP_STATE_KEY L"Lsa\\Tueor"
//
// Security Manager private flags in the Flags field of the
// SECMGR_AREA_DESCRIPTOR structure. See definition of
// SECMGR_AREA_FLAG_PRIVATE_SECMGR_USE in secmgr.h.
//
// AREA_EXPANDED - When set, indicates that all the items
// AREA_INITIALIZED - When set, indicates the area has been
// invoked in some manner at least once. Until this is
// done, the values for the area are not likely to be
// current (or valid at all).
//
// for the area should be displayed when in item-list
// mode. Otherwise, only the area name is displayed.
//
#define SECMGRP_AREA_FLAG_AREA_INITIALIZED (0X00010000)
#define SECMGRP_AREA_FLAG_AREA_EXPANDED (0X00020000)
////////////////////////////////////////////////////////////////////////
// //
// Security Manager-Wide Types //
// //
////////////////////////////////////////////////////////////////////////
//
// Used to keep track of loaded smedlys.
// Note the similarity to SECMGR_SMEDLY_CONTROL.
//
typedef struct _SECMGRP_SMEDLY_CONTEXT {
//
// This field points to the smedly's control structure
//
PSECMGR_SMEDLY_CONTROL SmedlyControl;
//
// This is the module handle of the smedly dll
//
PVOID ModuleHandle;
} SECMGRP_SMEDLY_CONTEXT, *PSECMGRP_SMEDLY_CONTEXT;
//
// Used to group SIDs according to predefined
// groupings. There should be one of these for
// each enumeration in the SECMGR_WHO type.
//
typedef struct _SECMGRP_ACCOUNTS {
ULONG Accounts; // Number of accounts in array (up to SECMGRP_MAX_WELL_KNOWN_ACCOUNTS)
PSID Sid[SECMGRP_MAX_WELL_KNOWN_ACCOUNTS];
} SECMGRP_ACCOUNTS, *PSECMGRP_ACCOUNTS;
////////////////////////////////////////////////////////////////////////
// //
// Security Manager-Wide Routine Prototypes //
// //
////////////////////////////////////////////////////////////////////////
BOOLEAN
SecMgrpInitializeGlobals( IN HINSTANCE hInstance );
HWND
SecMgrpCreateSplashWindow (
IN HINSTANCE hInstance,
IN HWND hParentWnd
);
VOID
SecMgrpSmedlyReportFileChange(
IN BOOL ReportFileActive,
IN DWORD Pass
);
VOID
SecMgrpSmedlySecurityLevelChange( VOID );
BOOLEAN
SecMgrpSmedlyInitialize( IN HINSTANCE hInstance );
VOID
SecMgrpLoadSecurityLevel(
PULONG Level
);
VOID
SecMgrpSaveSecurityLevel( VOID );
VOID
SecMgrpSetSecurityLevel(
HWND hwnd,
BOOL SetIconToo,
DWORD IconControlId
);
BOOLEAN
SecMgrpPopUp(
HWND hwnd,
ULONG MessageId,
ULONG TitleId //Optional
);
BOOLEAN
SecMgrpYesNoPopUp(
HWND hwnd,
ULONG MessageId,
ULONG TitleId //Optional
);
BOOL
SecMgrpCenterWindow (
HWND hwndChild,
HWND hwndParent
);
VOID
SecMgrpButtonConfigure(
HWND hwnd
);
VOID
SecMgrpSuggestOpeningReport(
HWND hwnd
);
VOID
SecMgrpButtonListAll(
IN HWND hwnd
);
VOID
SecMgrpFillInItemList(
IN BOOL ReportOnly,
IN HWND hwnd
);
LONG
SecMgrpDlgProcInitReport(
HWND hwnd,
UINT wMsg,
DWORD wParam,
LONG lParam
);
VOID
SecMgrpInvokeArea(
IN HWND hwnd,
IN ULONG AreaIndex,
IN BOOL Interactive
);
VOID
SecMgrpButtonReport(
HWND hwnd
);
VOID
SecMgrpReportSecurityLevel(
IN DWORD PrefixString,
IN ULONG Level
);
VOID
SecMgrpChangeSecurityLevel(
IN HWND hwnd
);
//
// Services available to smedlys
//
VOID SecMgrPrintReportLine( IN LPWSTR Line );
BOOL SecMgrDisplayXGraphic( IN HWND hwnd, IN INT ControlId, IN BOOL Stronger );
BOOL SecMgrDisplayCheckGraphic( IN HWND hwnd, IN INT ControlId );
BOOL SecMgrEraseGraphic( IN HWND hwnd, IN INT ControlId );
VOID SecMgrRebootRequired( VOID );
VOID SecMgrWriteProfileArea( IN LPWSTR Area, IN LPWSTR Descriptor, IN LPWSTR Line );
VOID SecMgrWriteProfileLine( OUT LPWSTR Line, OUT ULONG Length );
BOOL SecMgrGetProfileArea( IN LPWSTR Area );
BOOL SecMgrGetProfileLine( OUT LPWSTR Line );
////////////////////////////////////////////////////////////////////////
// //
// Global Variables //
// //
// (See global.c for descriptions of these variables) //
// //
////////////////////////////////////////////////////////////////////////
extern HINSTANCE SecMgrphInstance;
extern BOOL SecMgrpAllowChanges;
extern BOOL SecMgrpAdminUser;
extern HANDLE SecMgrpLevelHandle;
extern BOOLEAN SecMgrpChangesMade;
extern NT_PRODUCT_TYPE SecMgrpProductType;
extern ULONG SecMgrpCurrentLevel;
extern ULONG SecMgrpOriginalLevel;
extern TCHAR SecMgrpApplicationName[];
extern BOOLEAN SecMgrpRebootRequired;
extern PSID SecMgrpAdminsSid;
extern PSID SecMgrpWorldSid;
extern SECMGRP_ACCOUNTS SecMgrpAnyoneSids;
extern SECMGRP_ACCOUNTS SecMgrpOperatorSids;
extern SECMGRP_ACCOUNTS SecMgrpOpersAndAdminsSids;
extern SECMGRP_ACCOUNTS SecMgrpAdminsSids;
extern HBITMAP SecMgrpXBitMapMask;
extern HBITMAP SecMgrpXBitMap;
extern HBITMAP SecMgrpUpArrowBitMap;
extern HBITMAP SecMgrpEraseBitMap;
extern HBITMAP SecMgrpCheckBitMap;
extern SECMGR_DISPATCH_TABLE SecMgrpSmedlyDispatchTable;
extern SECMGR_CONTROL SecMgrpControl;
extern ULONG SecMgrpSmedlyCount;
extern ULONG SecMgrpAreaCount;
extern SECMGRP_SMEDLY_CONTEXT SecMgrpSmedly[SECMGRP_MAX_SMEDLYS];
extern PSECMGR_AREA_DESCRIPTOR SecMgrpAreas[SECMGRP_MAX_AREAS];
extern BOOLEAN SecMgrpReportActive;
#if DBG
extern BOOL SecMgrpDbgBreakOnSmedlyLoad;
#endif //DBG