Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.012 c
15-1145028356
Kart S.
2006-04-14 19:25
2006.05.07
TEditWindow (Кто помнит Turbo Vision?)


2-1145549181
Vitalik__
2006-04-20 20:06
2006.05.07
координаты курсора мыши


2-1145522700
Zaq123
2006-04-20 12:45
2006.05.07
Как создать текстовый файл с кодовой страницей 866?


2-1145516327
Сергей И
2006-04-20 10:58
2006.05.07
Может кто подскажет как произвести обратный отсчет времени


2-1144847743
kernel
2006-04-12 17:15
2006.05.07
Console and RUS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский