コード例 #1
0
        void ISecurityInformation3.OpenElevatedEditor(IntPtr hWnd, SI_PAGE_TYPE uPage)
        {
            var pgType = (SI_PAGE_TYPE)LOWORD((uint)uPage);
            var pgActv = (SI_PAGE_ACTIVATED)HIWORD((uint)uPage);

            System.Diagnostics.Debug.WriteLine($"OpenElevatedEditor: {pgType} - {pgActv}");
            var lastElev = currentElevation;

            switch (pgActv)
            {
            case SI_PAGE_ACTIVATED.SI_SHOW_DEFAULT:
                currentElevation |= (SI_OBJECT_INFO_Flags.SI_PERMS_ELEVATION_REQUIRED | SI_OBJECT_INFO_Flags.SI_VIEW_ONLY);
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_PERM_ACTIVATED:
                currentElevation |= (SI_OBJECT_INFO_Flags.SI_PERMS_ELEVATION_REQUIRED | SI_OBJECT_INFO_Flags.SI_VIEW_ONLY);
                pgType            = SI_PAGE_TYPE.SI_PAGE_ADVPERM;
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_AUDIT_ACTIVATED:
                currentElevation |= SI_OBJECT_INFO_Flags.SI_AUDITS_ELEVATION_REQUIRED;
                pgType            = SI_PAGE_TYPE.SI_PAGE_AUDIT;
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_OWNER_ACTIVATED:
                currentElevation |= SI_OBJECT_INFO_Flags.SI_OWNER_ELEVATION_REQUIRED;
                pgType            = SI_PAGE_TYPE.SI_PAGE_OWNER;
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_EFFECTIVE_ACTIVATED:
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_SHARE_ACTIVATED:
                break;

            case SI_PAGE_ACTIVATED.SI_SHOW_CENTRAL_POLICY_ACTIVATED:
                break;
            }
            ShowDialog(hWnd, pgType, pgActv);
            currentElevation = lastElev;
        }
コード例 #2
0
        public RawSecurityDescriptor ShowDialog(IntPtr hWnd, SI_PAGE_TYPE pageType = SI_PAGE_TYPE.SI_PAGE_PERM, SI_PAGE_ACTIVATED pageAct = SI_PAGE_ACTIVATED.SI_SHOW_DEFAULT)
        {
            System.Diagnostics.Debug.WriteLine($"ShowDialog: {pageType} {pageAct}");
            SecurityEventArg sd = null;
            EventHandler <SecurityEventArg> fn = (o, e) => sd = e;

            try
            {
                OnSetSecurity += fn;
                if (Environment.OSVersion.Version.Major == 5 || (pageType == SI_PAGE_TYPE.SI_PAGE_PERM && pageAct == SI_PAGE_ACTIVATED.SI_SHOW_DEFAULT))
                {
                    if (!EditSecurity(hWnd, this))
                    {
                        Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
                    }
                }
                else
                {
                    EditSecurityAdvanced(hWnd, this, pageType, pageAct);
                }
                if (sd != null)
                {
                    var sddl = SecurityDescriptorPtrToSdll(sd.SecurityDesciptor, sd.Parts);
                    if (!string.IsNullOrEmpty(sddl))
                    {
                        System.Diagnostics.Debug.WriteLine($"ShowDialog: Return: {sddl}");
                        return(new RawSecurityDescriptor(sddl));
                    }
                }
            }
            finally
            {
                OnSetSecurity -= fn;
            }
            System.Diagnostics.Debug.WriteLine("ShowDialog: Return: null");
            return(null);
        }
コード例 #3
0
ファイル: Providers.cs プロジェクト: sasqwatch/Vanara
 /// <summary>Callback method for the property pages.</summary>
 /// <param name="hwnd">The HWND.</param>
 /// <param name="uMsg">The message.</param>
 /// <param name="uPage">The page type.</param>
 public virtual void PropertySheetPageCallback(HWND hwnd, PropertySheetCallbackMessage uMsg, SI_PAGE_TYPE uPage)
 {
 }
コード例 #4
0
 void ISecurityInformation.PropertySheetPageCallback(IntPtr hwnd, PropertySheetCallbackMessage uMsg, SI_PAGE_TYPE uPage)
 {
     System.Diagnostics.Debug.WriteLine($"PropertySheetPageCallback: {hwnd}, {uMsg}, {uPage}");
     prov.PropertySheetPageCallback(hwnd, uMsg, uPage);
 }
コード例 #5
0
 private uint PropertySheetPageCallback(IntPtr pThis, IntPtr hwnd, uint uMsg, SI_PAGE_TYPE uPage)
 {
     return(S_OK);
 }
コード例 #6
0
 public uint PropertySheetPageCallback(IntPtr hwnd, ushort uMsg, SI_PAGE_TYPE uPage)
 {
     throw new NotImplementedException();
 }