Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизISecurityInformation и Aclui.pas Найти похожие ветки
← →
Eraser © (2006-02-17 22:41) [0]Добрый вечер.
Не могу найти в сети файл, в котором описан ISecurityInformation. Название у файла должно быть таки Aclui.pas, т.к. существует Aclui.h.
У кого-нибудь есть сабж?
Спасибо.
← →
Игорь Шевченко © (2006-02-17 23:08) [1]1/2
#ifndef _ACLUI_H_
#define _ACLUI_H_
#if _MSC_VER > 1000
#pragma once
#endif
#include <objbase.h>
#include <commctrl.h> // for HPROPSHEETPAGE
#include <accctrl.h> // for SE_OBJECT_TYPE
#if !defined(_ACLUI_)
#define ACLUIAPI DECLSPEC_IMPORT WINAPI
#else
#define ACLUIAPI WINAPI
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
//
// ISecurityInformation interface
//
// Methods:
//
// GetObjectInformation - Allows UI to determine type of object being
// edited. Also allows determining if object is a container.
//
// GetSecurity - Allows retrieving of ACLs from the original object
// NOTE: ACLUI will LocalFree the security descriptor
// returned by GetSecurity.
// SetSecurity - Allows setting of the ACLs on the original object
//
// GetAccessRights - For retrieving the list of rights allowed
// on this object.
//
// MapGeneric - For mapping generic rights to standard & specific rights
//
// GetInheritTypes - For retrieving the list of possible sub-object types
// for a container.
//
// PropertySheetCallback - A method which is called back during the various
// security UI property pages so that specialized work can be
// done. Similar to PropSheetPageProc. If uMsg == PSPCB_CREATE,
// then any error return value other than E_NOTIMPL will abort
// the creation of that page. The type of page being created or
// destroyed is indicated by the uPage parameter.
//
typedef struct _SI_OBJECT_INFO
{
DWORD dwFlags;
HINSTANCE hInstance; // resources (e.g. strings) reside here
LPWSTR pszServerName; // must be present
LPWSTR pszObjectName; // must be present
LPWSTR pszPageTitle; // only valid if SI_PAGE_TITLE is set
GUID guidObjectType; // only valid if SI_OBJECT_GUID is set
} SI_OBJECT_INFO, *PSI_OBJECT_INFO;
// SI_OBJECT_INFO flags
#define SI_EDIT_PERMS 0x00000000L // always implied
#define SI_EDIT_OWNER 0x00000001L
#define SI_EDIT_AUDITS 0x00000002L
#define SI_CONTAINER 0x00000004L
#define SI_READONLY 0x00000008L
#define SI_ADVANCED 0x00000010L
#define SI_RESET 0x00000020L //equals to SI_RESET_DACL|SI_RESET_SACL|SI_RESET_OWNER
#define SI_OWNER_READONLY 0x00000040L
#define SI_EDIT_PROPERTIES 0x00000080L
#define SI_OWNER_RECURSE 0x00000100L
#define SI_NO_ACL_PROTECT 0x00000200L
#define SI_NO_TREE_APPLY 0x00000400L
#define SI_PAGE_TITLE 0x00000800L
#define SI_SERVER_IS_DC 0x00001000L
#define SI_RESET_DACL_TREE 0x00004000L
#define SI_RESET_SACL_TREE 0x00008000L
#define SI_OBJECT_GUID 0x00010000L
#define SI_EDIT_EFFECTIVE 0x00020000L
#define SI_RESET_DACL 0x00040000L
#define SI_RESET_SACL 0x00080000L
#define SI_RESET_OWNER 0x00100000L
#define SI_NO_ADDITIONAL_PERMISSION 0x00200000L
#define SI_MAY_WRITE 0x10000000L //not sure if user can write permission
#define SI_EDIT_ALL (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS)
typedef struct _SI_ACCESS
{
const GUID *pguid;
ACCESS_MASK mask;
LPCWSTR pszName; // may be resource ID
DWORD dwFlags;
} SI_ACCESS, *PSI_ACCESS;
// SI_ACCESS flags
#define SI_ACCESS_SPECIFIC 0x00010000L
#define SI_ACCESS_GENERAL 0x00020000L
#define SI_ACCESS_CONTAINER 0x00040000L // general access, container-only
#define SI_ACCESS_PROPERTY 0x00080000L
// ACE inheritance flags (CONTAINER_INHERIT_ACE, etc.) may also be set.
// They will be used as the inheritance when an access is turned on.
typedef struct _SI_INHERIT_TYPE
{
const GUID *pguid;
ULONG dwFlags;
LPCWSTR pszName; // may be resource ID
} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;
// SI_INHERIT_TYPE flags are a combination of INHERIT_ONLY_ACE,
// CONTAINER_INHERIT_ACE, and OBJECT_INHERIT_ACE.
← →
Игорь Шевченко © (2006-02-17 23:08) [2]2/2
typedef enum _SI_PAGE_TYPE
{
SI_PAGE_PERM=0,
SI_PAGE_ADVPERM,
SI_PAGE_AUDIT,
SI_PAGE_OWNER,
SI_PAGE_EFFECTIVE,
} SI_PAGE_TYPE;
// Message to PropertySheetPageCallback (in addition to
// PSPCB_CREATE and PSPCB_RELEASE)
#define PSPCB_SI_INITDIALOG (WM_USER + 1)
#undef INTERFACE
#define INTERFACE ISecurityInformation
DECLARE_INTERFACE_(ISecurityInformation, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** ISecurityInformation methods ***
STDMETHOD(GetObjectInformation) (THIS_ PSI_OBJECT_INFO pObjectInfo ) PURE;
STDMETHOD(GetSecurity) (THIS_ SECURITY_INFORMATION RequestedInformation,
PSECURITY_DESCRIPTOR *ppSecurityDescriptor,
BOOL fDefault ) PURE;
STDMETHOD(SetSecurity) (THIS_ SECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR pSecurityDescriptor ) PURE;
STDMETHOD(GetAccessRights) (THIS_ const GUID* pguidObjectType,
DWORD dwFlags, // SI_EDIT_AUDITS, SI_EDIT_PROPERTIES
PSI_ACCESS *ppAccess,
ULONG *pcAccesses,
ULONG *piDefaultAccess ) PURE;
STDMETHOD(MapGeneric) (THIS_ const GUID *pguidObjectType,
UCHAR *pAceFlags,
ACCESS_MASK *pMask) PURE;
STDMETHOD(GetInheritTypes) (THIS_ PSI_INHERIT_TYPE *ppInheritTypes,
ULONG *pcInheritTypes ) PURE;
STDMETHOD(PropertySheetPageCallback)(THIS_ HWND hwnd, UINT uMsg, SI_PAGE_TYPE uPage ) PURE;
};
typedef ISecurityInformation *LPSECURITYINFO;
#undef INTERFACE
#define INTERFACE ISecurityInformation2
DECLARE_INTERFACE_(ISecurityInformation2, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** ISecurityInformation2 methods ***
STDMETHOD_(BOOL,IsDaclCanonical) (THIS_ IN PACL pDacl) PURE;
STDMETHOD(LookupSids) (THIS_ IN ULONG cSids, IN PSID *rgpSids, OUT LPDATAOBJECT *ppdo) PURE;
};
typedef ISecurityInformation2 *LPSECURITYINFO2;
// HGLOBAL containing SID_INFO_LIST returned by ISecurityInformation2::LookupSids
#define CFSTR_ACLUI_SID_INFO_LIST TEXT("CFSTR_ACLUI_SID_INFO_LIST")
// Data structures corresponding to CFSTR_ACLUI_SID_INFO_LIST
typedef struct _SID_INFO
{
PSID pSid;
PWSTR pwzCommonName;
PWSTR pwzClass; // Used for selecting icon, e.g. "User" or "Group"
PWSTR pwzUPN; // Optional, may be NULL
} SID_INFO, *PSID_INFO;
typedef struct _SID_INFO_LIST
{
ULONG cItems;
SID_INFO aSidInfo[ANYSIZE_ARRAY];
} SID_INFO_LIST, *PSID_INFO_LIST;
#undef INTERFACE
#define INTERFACE IEffectivePermission
DECLARE_INTERFACE_(IEffectivePermission, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** ISecurityInformation methods ***
STDMETHOD(GetEffectivePermission) ( THIS_ const GUID* pguidObjectType,
PSID pUserSid,
LPCWSTR pszServerName,
PSECURITY_DESCRIPTOR pSD,
POBJECT_TYPE_LIST *ppObjectTypeList,
ULONG *pcObjectTypeListLength,
PACCESS_MASK *ppGrantedAccessList,
ULONG *pcGrantedAccessListLength) PURE;
};
typedef IEffectivePermission *LPEFFECTIVEPERMISSION;
#undef INTERFACE
#define INTERFACE ISecurityObjectTypeInfo
DECLARE_INTERFACE_(ISecurityObjectTypeInfo, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** ISecurityInformation methods ***
STDMETHOD(GetInheritSource)(SECURITY_INFORMATION si,
PACL pACL,
PINHERITED_FROM *ppInheritArray) PURE;
};
typedef ISecurityObjectTypeInfo *LPSecurityObjectTypeInfo;
// {965FC360-16FF-11d0-91CB-00AA00BBB723}
EXTERN_GUID(IID_ISecurityInformation, 0x965fc360, 0x16ff, 0x11d0, 0x91, 0xcb, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x23);
// {c3ccfdb4-6f88-11d2-a3ce-00c04fb1782a}
EXTERN_GUID(IID_ISecurityInformation2, 0xc3ccfdb4, 0x6f88, 0x11d2, 0xa3, 0xce, 0x0, 0xc0, 0x4f, 0xb1, 0x78, 0x2a);
// {3853DC76-9F35-407c-88A1-D19344365FBC}
EXTERN_GUID(IID_IEffectivePermission, 0x3853dc76, 0x9f35, 0x407c, 0x88, 0xa1, 0xd1, 0x93, 0x44, 0x36, 0x5f, 0xbc);
// {FC3066EB-79EF-444b-9111-D18A75EBF2FA}
EXTERN_GUID(IID_ISecurityObjectTypeInfo, 0xfc3066eb, 0x79ef, 0x444b, 0x91, 0x11, 0xd1, 0x8a, 0x75, 0xeb, 0xf2, 0xfa);
HPROPSHEETPAGE ACLUIAPI CreateSecurityPage( LPSECURITYINFO psi );
BOOL ACLUIAPI EditSecurity( HWND hwndOwner, LPSECURITYINFO psi );
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _ACLUI_H_ */
← →
Eraser © (2006-02-17 23:11) [3]
> Игорь Шевченко © (17.02.06 23:08) [1]
VS у меня тоже установлен! :-)
но вопрос снят, прошу прощения за невнимательность, слона то и не приметил, как говорится
New update of full expanded Win32 API Conversion, tested and in ongoing development. Contains more updates for Windows XP and now includes "jwa" prefix on all unit names. Latest update 25-Nov-2002.
NB A more recent version of this file may be available from Marcel"s site.
ftp://delphi-jedi.org/api/win32api.zip
тут есть JwaAclUI.
теперь бы во всём этом разобраться ... (
← →
Игорь Шевченко © (2006-02-18 00:27) [4]Eraser © (17.02.06 23:11) [3]
Тьфу, я слова .pas тоже не заметил.
Так а в чем проблема перевести ? :)
← →
Eraser © (2006-02-18 01:28) [5]
> Игорь Шевченко © (18.02.06 00:27) [4]
ну теперь то проблемы нет...
так уже даже файл с заголовком Aclui.pas создал, но нашёлся оригинал :)
← →
BiN © (2006-02-18 13:54) [6]
> Eraser © (17.02.06 23:11) [3]
>
> теперь бы во всём этом разобраться ... (
У Рихтера пример на си
http://irazin.ru/Downloads/BookSamples/Richter_Clark.zip
а вот на delphi
http://www.cryer.co.uk/newsgroups/bp_delphi_rtl_win32/200601/060121859.htm
← →
Eraser © (2006-02-18 14:30) [7]
> BiN © (18.02.06 13:54) [6]
спасибо огромное за ссылки!
← →
Eraser © (2006-02-18 14:42) [8]
> BiN © (18.02.06 13:54) [6]
А где в сети можно скачать книгу, на примеры из которой вы дали ссылку, на русском, т.к. на английском есть на том же сайте? всё таки такие всесчи приятнее на родном языке читать...
← →
BiN © (2006-02-18 14:55) [9]
> Eraser © (18.02.06 14:42) [8]
>
> А где в сети можно скачать книгу, на примеры из которой
> вы дали ссылку, на русском, т.к. на английском есть на том
> же сайте? всё таки такие всесчи приятнее на родном языке
> читать...
Книга эта весьма полезна и интересна, но замечу, что там не описывается работа с ISecurityInformation.
Где скачать, увы, не знаю.
← →
Eraser © (2006-02-18 14:57) [10]
> BiN © (18.02.06 14:55) [9]
Да работать с ISecurityInformation не сложно, если хорошо знать систему безопасности виндовз...
Пока что читаю на английском, может оно и к лучшему )
← →
BiN © (2006-02-18 15:06) [11]
> Eraser © (18.02.06 14:57) [10]
>
>
> > BiN © (18.02.06 14:55) [9]
>
> Да работать с ISecurityInformation не сложно, если хорошо
> знать систему безопасности виндовз...
> Пока что читаю на английском, может оно и к лучшему )
Могу выслать свои наработки, если интересно.
← →
Eraser © (2006-02-18 15:09) [12]
> BiN © (18.02.06 15:06) [11]
ОЧЕНЬ интересно, иходный код - лучший учитель!
alex&aledensoft.com
спасибо ещё раз!
← →
BiN © (2006-02-18 15:14) [13]выслал
← →
Eraser © (2006-02-18 15:20) [14]
> BiN © (18.02.06 15:14) [13]
Благодарю.
Буду разбираться что к чему.
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.009 c