#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
import os
from subprocess import PIPE,Popen
import ctypes
import shutil
import time
import re

def permissions(dirpath):
    mode=0o777
    if os.path.isdir(dirpath):
        try:
            for root,dirs,files in os.walk(dirpath,topdown=False):
                for dircs in [os.path.join(root,d) for d in dirs]:
                    os.chmod(dircs,mode)
                for s_file in [os.path.join(root,f) for f in files]:
                    os.chmod(s_file,mode)
        except Exception as E:
            print "File being Used %s"%E


class disable_file_system_redirection:
    _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
    _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
    def __enter__(self):
        self.old_value = ctypes.c_long()
        self.success = self._disable(ctypes.byref(self.old_value))
    def __exit__(self, type, value, traceback):
        if self.success:
            self._revert(self.old_value)

with disable_file_system_redirection():
    p=Popen('REG ADD  "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v ClearPageFileAtShutdown /t REG_DWORD /f /d 1',stdout=PIPE,stderr=PIPE)
    r1,e1=p.communicate()
    if e1:
        print e1
    else:
        print r1
    q=Popen('REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" /v VisualFXSetting /t REG_DWORD /f /d 3',stdout=PIPE,stderr=PIPE)
    r2,e2=q.communicate()
    if e2:
        print e2
    else:
        print r2
    f=Popen('REG ADD "HKCU\Control Panel\Desktop" /v UserPreferencesMask /t REG_BINARY /f /d "9E 12 03 80 10 00 00 00"',stdout=PIPE,stderr=PIPE)
    r3,e3=f.communicate()
    if e3:
        print e3
    else:
        print r3
#defrag
    s=Popen('defrag.exe /C /D', shell = True, stdout = PIPE, stderr = PIPE)
    r4,e4=s.communicate()
    if e4:
        print e4
    else:
        print r4
#removing Temp files
    print "Removing Users Temp Files"
    users=os.popen("net user").read().split()[5:-5]
    
    fil_users=[i for i in users if i!='Guest' and i!='DefaultAccount']
    fil_user_temp_path=["C:\\Users\\"+i+"\\AppData\\Local\\Temp" for i in fil_users ]
    for i in fil_user_temp_path:
        if os.path.exists(i):
            print "Providing permission %s "%i
            permissions(i)
            print "Cleaning %s"%i
            shutil.rmtree(i,ignore_errors=True)
        else:
            pass
    print "Provinding Permission C:\Windows\Temp"
    permissions("C:\Windows\Temp")
    print("Cleaning C:\Windows\Temp")
    shutil.rmtree("C:\Windows\Temp",ignore_errors=True)
    print "Cleared Temp Files\n"
    #logs
    fil_logs=os.popen('powershell.exe "Get-EventLog -LogName * | Select-Object -Property Log"').read().splitlines()[3:-2]
    #print fil_logs
    filtered_log=[i.strip()for i in fil_logs]
    #print filtered_log
    for i in filtered_log:
        print "Clearing Logs of %s"%i
        u=Popen("wmic nteventlog where filename='%s' cleareventlog"%i,stdout=PIPE,stderr=PIPE)
        r5,e5=u.communicate()
        if e5:
            print e5
        else:
            print r5

    print "Logs Cleared"

print "Script executed"
