403Webshell
Server IP : 123.56.80.60  /  Your IP : 216.73.216.33
Web Server : Apache/2.4.54 (Win32) OpenSSL/1.1.1s PHP/7.4.33 mod_fcgid/2.3.10-dev
System : Windows NT iZhx3sob14hnz7Z 10.0 build 14393 (Windows Server 2016) i586
User : SYSTEM ( 0)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Windows/diagnostics/system/WindowsUpdate/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Windows/diagnostics/system/WindowsUpdate/cl_security.ps1
# Copyright © 2012, Microsoft Corporation. All rights reserved.
#*================================================================================
# REQUIRES PS 1.0 Environment
#*================================================================================

. ./utils_SetupEnv.ps1
trap [Exception]
{
 pop-msg ($_);
 continue;
}
##line 13

$IERepairType = import-cs `
	-classname Microsoft.Windows.Diagnosis.IERepair `
	-sourcefile Security.cs `
	-sourcetext @"
namespace Microsoft.Windows.Diagnosis
{
    using Environment =					System.Environment;
    using Guid =						System.Guid;
    using GC =							System.GC;
    using IntPtr =						System.IntPtr;
    using UInt32 =						System.UInt32;
    using File =						System.IO.File;
    using FileNotFoundException =		System.IO.FileNotFoundException;
    using Path =						System.IO.Path;
    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Collections;
    using System.Reflection;
    using System.Diagnostics;


    using IDisposable = System.IDisposable;
    
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    struct ZONEATTRIBUTES
    {
        public UInt32 cbSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szDisplayName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szDescription;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szIconPath;
        public UInt32 dwTemplateMinLevel;
        public UInt32 dwTemplateRecommended;
        public UInt32 dwTemplateCurrentLevel;
        public UInt32 dwFlags;                     // ZAFLAGS.
    };

    enum URLZONEREG
    {
        URLZONEREG_DEFAULT = 0,
        URLZONEREG_HKLM,
        URLZONEREG_HKCU
    };

    enum URLZONE
    {
        URLZONE_INVALID = -1,               // Invalid Zone. Should only be used if no appropriate zone available.
        URLZONE_PREDEFINED_MIN = 0,
        URLZONE_LOCAL_MACHINE = 0,         // local machine zone is not exposed in UI
        URLZONE_INTRANET,                   // My Intranet zone
        URLZONE_TRUSTED,                    // Trusted Web sites zone
        URLZONE_INTERNET,                   // The Internet zone
        URLZONE_UNTRUSTED,                  // Untrusted sites zone
        URLZONE_PREDEFINED_MAX = 999,

        URLZONE_USER_MIN = 1000,
        URLZONE_USER_MAX = 10000,
    };

    enum tagURLTEMPLATE
    {
        // This value is just used to indicate the current set
        // of policies are not based on any template.
        URLTEMPLATE_CUSTOM = 0x000000,

        URLTEMPLATE_PREDEFINED_MIN = 0x10000,
        URLTEMPLATE_LOW = 0x10000,
        URLTEMPLATE_MEDLOW = 0x10500,
        URLTEMPLATE_MEDIUM = 0x11000,
        URLTEMPLATE_MEDHIGH = 0x11500,
        URLTEMPLATE_HIGH = 0x12000,
        URLTEMPLATE_PREDEFINED_MAX = 0x20000
    }

    enum ZAFLAGS
    {
        ZAFLAGS_CUSTOM_EDIT = 0x00000001,
        ZAFLAGS_ADD_SITES = 0x00000002,
        ZAFLAGS_REQUIRE_VERIFICATION = 0x00000004,
        ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008,  // Intranet only.
        ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010,  // Intranet only.
        ZAFLAGS_NO_UI = 0x00000020,  // Don't display UI (used for local machine)
        ZAFLAGS_SUPPORTS_VERIFICATION = 0x00000040,  // Supports server verification.
        ZAFLAGS_UNC_AS_INTRANET = 0x00000080,
        ZAFLAGS_DETECT_INTRANET = 0x00000100,  // Intranet only.

        // Locked/Unlocked state specific flags.
        ZAFLAGS_USE_LOCKED_ZONES = 0x00010000,
        // Used ONLY in GetZoneAttributes to specify that Template Matching should be done to verify
        // that zone's Current Level is correct.
        ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 0x00020000,
        // Bypass the zonemgr cache for this setting
        ZAFLAGS_NO_CACHE = 0x00040000,
    };

    [
      ComImport,
      Guid("EDC17559-DD5D-4846-8EEF-8BECBA5A4ABF"),
      InterfaceType(ComInterfaceType.InterfaceIsIUnknown)
    ]
    interface IInternetZoneManagerEx2
    {
        void GetZoneAttributes
       (
           [In]    uint dwZone,
           ref ZONEATTRIBUTES pZoneAttributes
       );


        int SetZoneAttributes
       (
           [In]    uint dwZone,
           ref ZONEATTRIBUTES pZoneAttributes
       );



        void GetZoneCustomPolicy
       (
           [In]    uint dwZone,     // zone index
           ref    Guid guidKey,    // key to lookup value
           [Out]   IntPtr  // allocation via IMemAlloc; caller frees
                     ppPolicy,   // pointer to output buffer pointer
           [Out]   IntPtr pcbPolicy,  // pointer to output buffer size
           [In]    URLZONEREG urlZoneReg    // effective, HKCU, or HKLM
       );

        void SetZoneCustomPolicy
       (
           [In]    uint dwZone,     // zone index
           ref    Guid guidKey,    // key to lookup value
           [In]    IntPtr pPolicy,    // input buffer pointer
           [In]    uint cbPolicy,   // input data size
           [In]    URLZONEREG urlZoneReg    // default, HKCU, or HKLM
       );

        int GetZoneActionPolicy
        (
            uint dwZone,     // zone index
            uint dwAction,   // index number of action
            ref uint pPolicy,    // output buffer pointer
            uint cbPolicy,    // output buffer size
            URLZONEREG urlZoneReg // effective, HKCU, or HKLM
        );

        int SetZoneActionPolicy
        (
            uint dwZone,     // zone index
            uint dwAction,   // index number of action
            ref uint pPolicy,    // input buffer pointer
            uint cbPolicy,    // input data size
            URLZONEREG urlZoneReg // HKCU, or HKLM
        );

        // UI, logging, and wrapper for both
        // This function is not implemented yet.
        void PromptAction
        (
            [In]    uint dwAction,                    // action type
            [In]    uint hwndParent,                    // parent window handle
            [In]    string pwszUrl,                    // URL to display
            [In]    string pwszText,                    // dialog text
            [In]    uint dwPromptFlags                // reserved, pass 0
        );
        // This method presents UI to ask user about specified action


        // This function is not implemented.
        void LogAction
        (
            [In]    uint dwAction,       // action type
            [In]    string pwszUrl,        // URL to log
            [In]    string pwszText,       // associated text
            [In]    uint dwLogFlags      // reserved, pass 0
        );


        // zone enumeration

        int CreateZoneEnumerator
        (
            ref uint pdwEnum,        // enum handle
            ref uint pdwCount,       // # of elements in the list.
            [In]    uint dwFlags         // reserved, pass 0
        );
        // Returns enumerator handle needed to enumerate defined zones.
        // The zone enumeration corresponds to a snap-shot of the zones when
        // the Create call is made.

        int GetZoneAt
        (
            [In]    uint dwEnum,         // returned by CreateZoneEnumerator
            [In]    uint dwIndex,        // 0-based
            ref  uint pdwZone        // absolute zone index.
        );


        void DestroyZoneEnumerator
        (
            [In]    uint dwEnum         // enum handle
        );
        // Destroys resources associated with an enumerator


        void CopyTemplatePoliciesToZone
        (
            [In]    uint dwTemplate,       // High, medium or low
            [In]    uint dwZone,           // Zone to copy policies to.
            [In]    uint dwReserved
        );


        void GetZoneActionPolicyEx
       (
           [In]    uint dwZone,     // zone index
           [In]    uint dwAction,   // index number of action
           [Out]   IntPtr pPolicy,    // output buffer pointer
           [In]    uint cbPolicy,    // output buffer size
           [In]    URLZONEREG urlZoneReg, // effective, HKCU, or HKLM
           [In]    uint dwFlags   //Lockdown Zones or Normal Zones via ZAFLAGS
       );


        void SetZoneActionPolicyEx
        (
            [In]    uint dwZone,     // zone index
            [In]    uint dwAction,   // index number of action
            [In]    IntPtr pPolicy,    // input buffer pointer
            [In]    uint cbPolicy,    // input data size
            [In]    URLZONEREG urlZoneReg, // HKCU, or HKLM
            [In]    uint dwFlags   //Lockdown Zones or Normal Zones via ZAFLAGS
        );

        int GetZoneAttributesEx
        (
            [In]    uint dwZone,
            ref     ZONEATTRIBUTES pZoneAttributes,
            [In]    uint dwFlags // can only be ZAFLAGS_VERIFY_TEMPLATE_SETTINGS
        );

        void GetZoneSecurityState
        (
            [In] uint dwZoneIndex,
            [In] bool fRespectPolicy,
            ref IntPtr pdwState,
            ref bool pfPolicyEncountered
        );

        void GetIESecurityState
        (
            [In] bool fRespectPolicy,
            ref IntPtr pdwState,
            ref bool pfPolicyEncountered,
            [In] bool fNoCache
        );

        void FixUnsecureSettings();

    }


    [ComImport, Guid("7b8a2d95-0ac9-11d1-896c-00c04fb6bfc4")]
    class InternetZoneManagerEx2 { }

    public class IERepair
    {
        private IInternetZoneManagerEx2 coClass = null;

        uint uZoneEnum;
        uint uZoneCount;

        uint URLACTION_LOWRIGHTS = 0x00002500;
        uint uCurrentPolicy = 0; //current policy for protect mode
        uint uDefaultPolicy = 0; //default policy for protect mode

        public IERepair()
        {
            coClass = (IInternetZoneManagerEx2)new InternetZoneManagerEx2();
        }

        // This is the "big hammer" function to repair any settings that are not secure.
        // We will need to define more granular functions that tell us which zones settings were not secure,
        // and what the unsecure settings were...
        public Hashtable RepairIESettings()
        {
            Hashtable ZoneHash = new Hashtable();
            if (coClass != null)
            {
                int res = coClass.CreateZoneEnumerator(ref uZoneEnum, ref uZoneCount, 0);
                if (res == 0)
                {
                    for (uint i = 0; i < uZoneCount; i++)
                    {
                        uint uZone = 0;
                        ZONEATTRIBUTES zoneatt = new ZONEATTRIBUTES();
                        res = coClass.GetZoneAt(uZoneEnum, i, ref uZone);
                        if (res == 0)
                        {
                            res = coClass.GetZoneAttributesEx(uZone, ref zoneatt, (uint)ZAFLAGS.ZAFLAGS_VERIFY_TEMPLATE_SETTINGS);

                            if (res == 0)
                            {
                                if (zoneatt.dwTemplateCurrentLevel != zoneatt.dwTemplateRecommended)
                                {
                                    zoneatt.dwTemplateCurrentLevel = zoneatt.dwTemplateRecommended;
                                    res = coClass.SetZoneAttributes(uZone, ref zoneatt);
                                    if (res == 0)
                                    {
                                        ZoneHash.Add(zoneatt.szDisplayName, zoneatt);
                                    }
                                }
                            }
                        }

                    }

                }

            }
            return ZoneHash;
        }
        public Hashtable CheckIESettings()
        {
            Hashtable ZoneHash = new Hashtable();
            if (coClass != null)
            {
                int res = coClass.CreateZoneEnumerator(ref uZoneEnum, ref uZoneCount, 0);
                if (res == 0)
                {
                    for (uint i = 0; i < uZoneCount; i++)
                    {
                        uint uZone = 0;
                        ZONEATTRIBUTES zoneatt = new ZONEATTRIBUTES();
                        res = coClass.GetZoneAt(uZoneEnum, i, ref uZone);
                        if (res == 0)
                        {
                            res = coClass.GetZoneAttributesEx(uZone, ref zoneatt, (uint)ZAFLAGS.ZAFLAGS_VERIFY_TEMPLATE_SETTINGS);

                            if (res == 0)
                            {
                                if (zoneatt.dwTemplateCurrentLevel != zoneatt.dwTemplateRecommended)
                                {
                                    ZoneHash.Add(zoneatt.szDisplayName, zoneatt);
                                }
                            }
                        }

                    }

                }

            }
            return ZoneHash;
        }
        public Hashtable GetIEZones()
        {
            Hashtable ZoneHash = new Hashtable();
            if (coClass != null)
            {
                int res = coClass.CreateZoneEnumerator(ref uZoneEnum, ref uZoneCount, 0);
                if (res == 0)
                {
                    for (uint i = 0; i < uZoneCount; i++)
                    {
                        uint uZone = 0;
                        ZONEATTRIBUTES zoneatt = new ZONEATTRIBUTES();
                        res = coClass.GetZoneAt(uZoneEnum, i, ref uZone);
                        if (res == 0)
                        {
                            res = coClass.GetZoneAttributesEx(uZone, ref zoneatt, (uint)ZAFLAGS.ZAFLAGS_VERIFY_TEMPLATE_SETTINGS);

                            if (res == 0)
                            {
                                ZoneHash.Add(zoneatt.szDisplayName, zoneatt);
                            }
                        }

                    }

                }

            }
            return ZoneHash;
        }
        public Hashtable CheckIEProtectMode()
        {
            Hashtable ZoneHash = new Hashtable();
            if (coClass != null)
            {
                int res = coClass.CreateZoneEnumerator(ref uZoneEnum, ref uZoneCount, 0);
                if (res == 0)
                {
                    for (uint i = 0; i < uZoneCount; i++)
                    {
                        uint uZone = 0;
                        res = coClass.GetZoneAt(uZoneEnum, i, ref uZone);
                        ZONEATTRIBUTES zoneatt = new ZONEATTRIBUTES();

                        if (res == 0)
                        {
                            // check the IE protect mode for each zone
                            res = coClass.GetZoneAttributesEx(uZone, ref zoneatt, (uint)ZAFLAGS.ZAFLAGS_VERIFY_TEMPLATE_SETTINGS);

                            if (res == 0)
                            {
                                coClass.GetZoneActionPolicy(uZone, URLACTION_LOWRIGHTS, ref uCurrentPolicy, sizeof(uint), URLZONEREG.URLZONEREG_DEFAULT);

                                coClass.GetZoneActionPolicy(uZone, URLACTION_LOWRIGHTS, ref uDefaultPolicy, sizeof(uint), URLZONEREG.URLZONEREG_HKLM);

                                if (uCurrentPolicy != uDefaultPolicy)
                                {
                                    ZoneHash.Add(zoneatt.szDisplayName, uCurrentPolicy);
                                }
                            }
                        }

                    }

                }

            }
            return ZoneHash;
        }

        public Hashtable RepairIEProtectMode()
        {
            Hashtable ZoneHash = new Hashtable();
            if (coClass != null)
            {
                int res = coClass.CreateZoneEnumerator(ref uZoneEnum, ref uZoneCount, 0);
                if (res == 0)
                {
                    for (uint i = 0; i < uZoneCount; i++)
                    {
                        uint uZone = 0;
                        res = coClass.GetZoneAt(uZoneEnum, i, ref uZone);
                        ZONEATTRIBUTES zoneatt = new ZONEATTRIBUTES();

                        if (res == 0)
                        {
                            // Repair the IE protect mode for each zone
                            res = coClass.GetZoneAttributesEx(uZone, ref zoneatt, (uint)ZAFLAGS.ZAFLAGS_VERIFY_TEMPLATE_SETTINGS);

                            if (res == 0)
                            {
                                coClass.GetZoneActionPolicy(uZone, URLACTION_LOWRIGHTS, ref uCurrentPolicy, sizeof(uint), URLZONEREG.URLZONEREG_DEFAULT);

                                coClass.GetZoneActionPolicy(uZone, URLACTION_LOWRIGHTS, ref uDefaultPolicy, sizeof(uint), URLZONEREG.URLZONEREG_HKLM);

                                if (uCurrentPolicy != uDefaultPolicy)
                                {
                                    res = coClass.SetZoneActionPolicy(uZone, URLACTION_LOWRIGHTS, ref uDefaultPolicy, sizeof(uint), URLZONEREG.URLZONEREG_DEFAULT);
                                    ZoneHash.Add(zoneatt.szDisplayName, uDefaultPolicy);
                                }
                            }
                        }

                    }

                }

            }
            return ZoneHash;
        }

    }

    public static class WDManager
    {
        [DllImport("Kernel32.dll", SetLastError = true)]
        private static extern bool SetDllDirectory(string pathName);

        [DllImport("MpClient.dll", CharSet = CharSet.Unicode)]
        private static extern uint WDStatus(out bool enabled);

        [DllImport("MpClient.dll", CharSet = CharSet.Unicode)]
        private static extern uint WDEnable(bool enable);

        public static bool IsInstalled()
        {
            bool installed = false;
            try
            {
                // #168704 by removing hard coded path name in CL_Security.ps1
                string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "windows defender");
                installed = SetDllDirectory(path);
            }
            catch (Exception)
            {
            }
            return installed;
        }

        public static bool IsEnabled()
        {
            bool isEnabled = true;
            uint result = 0;
            try
            {
                result = WDStatus(out isEnabled);
            }
            catch (Exception) //DllNotFoundException
            {
                isEnabled = false;
            }
            if (result != 0)
            {
                isEnabled = false;
            }
            return isEnabled;
        }

        public static uint SetEnable(bool enable)
        {
            uint result = 0;
            try
            {
                //If MSE and Forefront are installed, Windows Defender will be forced to
                //turn off and this call will take a while to return and it won't succeed.
                result = WDEnable(enable);
            }
            catch (Exception) //DllNotFoundException
            {
            }
            return result;
        }
    }

    public class WDManagerNew : IDisposable
    {
        
        #region static properties

        private static string _dllPath;
        public static string DllPath
        {
            get { return WDManagerNew._dllPath; }
            set { WDManagerNew._dllPath = value; }
        }

        #endregion

        #region private

        private IntPtr _handle;
        private const int LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008;

        [DllImport("kernel32")]
        private static extern bool FreeLibrary(IntPtr dllPointer);

        [DllImport("kernel32")]
        private static extern IntPtr LoadLibraryEx(string dllFilePath, IntPtr hFile, uint dwFlags);

        [DllImport("kernel32", CharSet = CharSet.Unicode, EntryPoint = "GetProcAddress", SetLastError = true)]
        public extern static IntPtr GetProcAddress(IntPtr dllPointer, string functionName);
        
        private delegate uint WDEnableDelegate(bool pfEnable);
        private delegate uint WDStatusDelegate(out bool pfEnabled);
        private WDEnableDelegate _WDEnable;
        private WDStatusDelegate _WDStatus;

        #endregion

        public WDManagerNew()
        {
            if (string.IsNullOrEmpty(_dllPath))
            {
                _dllPath = FindLibrary();
            }
            _handle = LoadLibraryEx(_dllPath, IntPtr.Zero, LOAD_WITH_ALTERED_SEARCH_PATH);
            if (_handle == IntPtr.Zero)
            { 
                int errno = Marshal.GetLastWin32Error();
                string msg = string.Format(
                    "Windows Defender client library gave load error {0} in {1} ",
                    errno,
                    _dllPath);
                throw new System.IO.FileNotFoundException(msg); 
            }
            IntPtr proc;
            proc = GetProcAddress(_handle, "WDEnable");
            if (proc == IntPtr.Zero)
            {
                int errno = Marshal.GetLastWin32Error();
                // string s = Marshal.FormatMessage();
                string msg = string.Format(
                    "Proc WDEnable in Windows Defender client library, find returned {0} in {1} ",
                    errno,
                    _dllPath);
                throw new System.IO.FileNotFoundException(msg);
            }
            _WDEnable = (WDEnableDelegate)Marshal.GetDelegateForFunctionPointer(proc, typeof(WDEnableDelegate));
            proc = GetProcAddress(_handle, "WDStatus");
            if (proc == IntPtr.Zero)
            {
                int errno = Marshal.GetLastWin32Error();
                // string s = Marshal.FormatMessage();
                string msg = string.Format(
                    "Proc WDStatus in Windows Defender client library, find returned {0} in {1} ",
                    errno,
                    _dllPath);
                throw new System.IO.FileNotFoundException(msg);
            }
            _WDStatus = (WDStatusDelegate)Marshal.GetDelegateForFunctionPointer(proc, typeof(WDStatusDelegate));
        } // ctor

        public static string FindLibrary()
        {
            string basename = "Windows Defender\\MpClient.dll";
            string programdir = Environment.GetEnvironmentVariable("ProgramFiles");
            string programdir6432 = Environment.GetEnvironmentVariable("ProgramW6432");
            string path;
            path = string.IsNullOrEmpty(programdir)
                ? Path.Combine(programdir6432, basename)
                : Path.Combine(programdir, basename);
            if (!File.Exists(path))
            {
                throw new FileNotFoundException();
            }
            return path;
        } // FindLibrary

        ~WDManagerNew()
        {
            Dispose(false);
        } // dtor

        #region dispose pattern

        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                // dispose managed resources
                // Nothing to do!
            }
            if (_handle != IntPtr.Zero)
            {
                FreeLibrary(_handle);
                _handle = IntPtr.Zero;
            }
            _WDEnable = null;
            _WDStatus = null;
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        #endregion

        public static bool IsEnabled()
        {
            bool pfEnabled;
            WDManagerNew wdm = new WDManagerNew();
            uint result = wdm._WDStatus(out pfEnabled);
            return pfEnabled;
        }

        public static void SetEnabled(bool pfEnable)
        {
            WDManagerNew wdm = new WDManagerNew();
            uint result = wdm._WDEnable(pfEnable);
        }
    } // WDManager

    public static class IEPrivacyMgr
    {
    
        public enum PrivacyType
        {
            PRIVACY_TYPE_FIRST_PARTY = 0,   // Refers to privacy settings for first party cookies.
            PRIVACY_TYPE_THIRD_PARTY = 1,   // Refers to privacy settings for third party cookies.
        };
    
        public enum URLZONE
        {
            INVALID = -1,               // Invalid Zone. Should only be used if no appropriate zone available.
            PREDEFINED_MIN = 0,         // Minimum value for a predefined zone. 
            LOCAL_MACHINE = 0,          // local machine zone is not exposed in UI
            INTRANET,                   // My Intranet zone
            TRUSTED,                    // Trusted Web sites zone
            INTERNET,                   // The Internet zone
            UNTRUSTED,                  // Untrusted sites zone
    
            PREDEFINED_MAX = 999,       // Maximum value for a predefined zone
            USER_MIN = 1000,            // Minimum value allowed for a user-defined zone
            USER_MAX = 10000,           // Maximum value allowed for a user-defined zone
        };
    
        public enum PrivacyTemplate
        {
            PRIVACY_TEMPLATE_NO_COOKIES = 0,    // Block All Cookies on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_HIGH = 1,          // High on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_MEDIUM_HIGH = 2,   // Medium_High on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_MEDIUM = 3,        // Medium on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_MEDIUM_LOW = 4,    // Low on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_LOW = 5,           // Accept All Cookies on the Privacy Preferences slider bar
            PRIVACY_TEMPLATE_CUSTOM = 100,      // User-defined
            PRIVACY_TEMPLATE_ADVANCED = 101,    // User-defined
            PRIVACY_TEMPLATE_MAX = 5,           // Same as PRIVACY_TEMPLATE_LOW
        };
    
        public enum InternetCookieState
        {
            COOKIE_STATE_UNKNOWN = 0x0,
            COOKIE_STATE_ACCEPT = 0x1,
            COOKIE_STATE_PROMPT = 0x2,
            COOKIE_STATE_LEASH = 0x3,
            COOKIE_STATE_DOWNGRADE = 0x4,
            COOKIE_STATE_REJECT = 0x5,
            COOKIE_STATE_MAX = COOKIE_STATE_REJECT,
        };
    
    [DllImport("wininet.dll", CharSet = CharSet.Unicode)]
    private static extern uint PrivacyGetZonePreference(URLZONE dwZone, PrivacyType dType, out PrivacyTemplate pwdTemplate, IntPtr szBuffer, out uint pszBufferLength);
    
    [DllImport("wininet.dll", CharSet = CharSet.Unicode)]
    private static extern uint PrivacySetZonePreference(URLZONE dwZone, PrivacyType dType, PrivacyTemplate pwdTemplate, IntPtr szBuffer, uint pszBufferLength);
    
    [DllImport("wininet.dll", CharSet = CharSet.Unicode)]
    private static extern bool InternetEnumPerSiteCookieDecision(string pszSiteName, ref IntPtr pszSiteNameSize, out IntPtr pdwDecision, int dwIndex);
    
    [DllImport("wininet.dll", CharSet = CharSet.Unicode)]
    private static extern bool InternetClearAllPerSiteCookieDecisions();
    
    
    public static ArrayList GetPrivacySites()
    {
        ArrayList privsites = new ArrayList();

        bool PerSiteDefined = false;
        string pszSiteName;
        int pszSiteNameSize;
        IntPtr pSNs;
        IntPtr pdwDecision = new IntPtr();

        int i = 0;

        // Determine if any sites are in the list
        do
        {
            pszSiteName = "";
            for (int c = 0; c < 64; c++)
            {
                pszSiteName += "\0";
            }

            pszSiteNameSize = (sizeof(char) * pszSiteName.Length);
            pSNs = new IntPtr(pszSiteNameSize);

            PerSiteDefined = InternetEnumPerSiteCookieDecision(pszSiteName, ref pSNs, out pdwDecision, i);
            if (PerSiteDefined == true) 
            {
                privsites.Add(pszSiteName); 
            }

            i++;
        } while (PerSiteDefined == true);

        return privsites;
    }
    
    
    public static bool CheckDefault()
    {
        bool isDefault = true;
    
        bool PerSiteDefined = false;
        string pszSiteName;
        int pszSiteNameSize;
        IntPtr pSNs;
        IntPtr pdwDecision = new IntPtr();

        int i = 0;
        
        // Determine if any sites are in the list
        do
        {
            pszSiteName = "";
            for (int c = 0; c < 64; c++)
            {
                pszSiteName += "\0";
            }

            pszSiteNameSize = (sizeof(char) * pszSiteName.Length);
            pSNs = new IntPtr(pszSiteNameSize);

            PerSiteDefined = InternetEnumPerSiteCookieDecision(pszSiteName, ref pSNs, out pdwDecision, i);
            if (PerSiteDefined == true) { isDefault = false; }
            
            i++;
        } while (PerSiteDefined == true);

    
        // Check Slider values
        
        uint ReturnValue;
        uint OutBuffer = 0;
        PrivacyTemplate pwdTemplate;
    
        URLZONE Zonetype;
        PrivacyType PrivType;
    
        PrivType = PrivacyType.PRIVACY_TYPE_FIRST_PARTY;
    
            Zonetype = URLZONE.INTERNET;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_MEDIUM) { isDefault = false; }
    
            Zonetype = URLZONE.INTRANET;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM) { isDefault = false; }
    
            Zonetype = URLZONE.TRUSTED;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM) { isDefault = false; }
    
            Zonetype = URLZONE.UNTRUSTED;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_NO_COOKIES) { isDefault = false; }
    
        
        PrivType = PrivacyType.PRIVACY_TYPE_THIRD_PARTY;
    
            Zonetype = URLZONE.INTERNET;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_MEDIUM) { isDefault = false; }
    
            Zonetype = URLZONE.INTRANET;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM) { isDefault = false; }
    
            Zonetype = URLZONE.TRUSTED;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM) { isDefault = false; }
    
            Zonetype = URLZONE.UNTRUSTED;
            ReturnValue = PrivacyGetZonePreference(Zonetype, PrivType, out pwdTemplate, IntPtr.Zero, out OutBuffer);
            if (pwdTemplate != PrivacyTemplate.PRIVACY_TEMPLATE_NO_COOKIES) { isDefault = false; }
    
        return isDefault;
    
    }
    
    public static void SetDefault()
    {
        uint ReturnValue;
        PrivacyType PrivType;
    
        PrivType = PrivacyType.PRIVACY_TYPE_FIRST_PARTY;
    
            ReturnValue = PrivacySetZonePreference(URLZONE.INTERNET, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_MEDIUM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.INTRANET, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.TRUSTED, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.UNTRUSTED, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_NO_COOKIES, IntPtr.Zero, 0);
    
        PrivType = PrivacyType.PRIVACY_TYPE_THIRD_PARTY;
    
            ReturnValue = PrivacySetZonePreference(URLZONE.INTERNET, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_MEDIUM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.INTRANET, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.TRUSTED, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_CUSTOM, IntPtr.Zero, 0);
            ReturnValue = PrivacySetZonePreference(URLZONE.UNTRUSTED, PrivType, PrivacyTemplate.PRIVACY_TEMPLATE_NO_COOKIES, IntPtr.Zero, 0);
    
            ClearCookieDecisions();
    }
    
    public static bool ClearCookieDecisions()
    {
        bool ReturnValue = InternetClearAllPerSiteCookieDecisions();
        return ReturnValue;
    }
    
    }

}
"@
##line 17

$WDManagerType = 'Microsoft.Windows.Diagnosis.WDManager' -as [type]
# WDManger is a static class, so object cannot be created
# $WDManager = new-object $WDManagerType
$result = $WDManagerType::IsInstalled()
if (-not $result)
{ throw "Windows Defender is not installed (missing DLL path)" }
$IERepair = new-object $IERepairType
$WDManagerNewType = 'Microsoft.Windows.Diagnosis.WDManagerNew' -as [type]
$PrivacyMgrType = 'Microsoft.Windows.Diagnosis.IEPrivacyMgr' -as [type]

#*================================================================================
#PrivacyMgr
#*================================================================================
function PrivacyMgr()
{

	
	    if($?)	{ return $true	}
    	else	{ return $false }
}
#*================================================================================
# Get-PrivacySiteList
#*================================================================================
function Get-PrivacySiteList()
{
	$SitesList = $PrivacyMgrType::GetPrivacySites() | ForEach-Object {$_.TrimEnd($null)}
	return $SitesList
}
#*================================================================================
#Check-PrivacyDefault
#*================================================================================
function Check-PrivacyDefault()
{
	return $PrivacyMgrType::CheckDefault()
}
#*================================================================================
#get item property value from registry property
#*================================================================================
function GetItemPropertyValue([string]$reg_path = $(throw "No registry path is specified"), [string]$propertyname = $(throw "no registry path is specified"))
{
    return (Get-ItemProperty $reg_path $propertyname -ErrorAction silentlycontinue)
}
#*================================================================================
#UnderPolicySetting
#*================================================================================
function UnderPolicySetting([string]$name = $(throw "No name is specified"), [string]$registrykey = $(throw "No registrykey is specified"))
{
    $result = $false
    $userID = ([Security.Principal.WindowsIdentity]::GetCurrent()).user.value.Replace('-', '_')
    $policysetting =  Get-WmiObject -Namespace "root\rsop\user\$userID" -query "select name, registrykey from RSOP_RegistryPolicySetting" | foreach ($_) {if ($_.registryKey -like "*Internet*") {$_}} | Select-Object name, registrykey
    if($PolicySetting -ne $null)
    {
        foreach($policyitem in $policysetting)
        {
            if(($policyitem.name -eq $name) -and ($policyitem.registrykey -eq $registrykey))
            {
                return $true
            }
        }
    }
    $key = get-item "Registry::HKEY_LOCAL_MACHINE\$registrykey" -ErrorAction SilentlyContinue
    if(@($key.Property) -contains $name)
    {
        return $true
    }
    return $result
}

#*================================================================================
#Get-RecursiveACLs
#*================================================================================
Function Get-RecursiveACLs($Path)
{
	# Build a collection that will hold the ACLs for each key
	$Result = @()
	
	if(test-path $path){
		# Get the ACLs for the supplied key and add them to the result
		$ACL = Get-Acl $Path
		$Result += $ACL
	
		# Get subkeys of the supplied key
		foreach ($ChildKeyName in (Get-Item $Path).GetSubKeyNames())
		{
			$Result += Get-RecursiveACLs("$Path\$ChildKeyName")
		}
	}
	
	# Return the resulting list of ACLs
	Return $Result
		
}
#*================================================================================
#Get-IdentityAccess
#*================================================================================
Function Get-IdentityAccess($ACL, $IdentityReference, $RegistryRights)
{

	Foreach ($AccessItem in $ACL.Access)
	{
		if($AccessItem -ne $null)
		{
			if ($AccessItem.IdentityReference.Tostring().Tolower() -eq $IdentityReference.Tolower())
			{
				if ($AccessItem.RegistryRights.Tostring().tolower() -eq $RegistryRights.Tolower())
				{
					return $true
				}
			}
		}
	}
	
	
	return $false
}

Youez - 2016 - github.com/yon3zu
LinuXploit