URL=r"https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe" #provide a URL 
file_name="python-3.10.7-amd64.exe"
import ctypes
import re
import time
import socket
import _winreg
import platform
import shutil
import ssl
import urllib2
import getpass
import zipfile
import shutil
import os
import glob
from subprocess import PIPE,Popen
import ctypes

#Decorator func
def out(func):
    def inn_ver(*args,**kwargs):
        ver_chk=os.popen("python --version").read()
        if "Python"in ver_chk:
            print("Verions of python already installed %s"%ver_chk)
        else:
            return func(*args,**kwargs)
    return inn_ver


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)
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"

@out            
def Download(src_path, URL,fp):
    import urllib2
    request = urllib2.Request(URL, headers={'User-Agent' : "Magic Browser"})
    try:
        gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
        parsed = urllib2.urlopen(request,context=gcontext)
    except:
        parsed = urllib2.urlopen(request)
    if not os.path.exists(src_path):
        os.makedirs(src_path)
    with open(fp, 'wb') as f:
        while True:
            chunk=parsed.read(100*1000*1000)
            if chunk:
                f.write(chunk)
            else:
                break
    return fp
Folder=os.environ['programdata']+r"\extraction_file"
if not os.path.exists(Folder):
    os.mkdir(Folder)
fileName=r"python-3.10.7-amd64.exe"
src_path=Folder
fp = os.path.join(src_path, fileName)
try:
    Excutable_path=Download(Folder, URL,fp)
    print "Downloaded succesfully to "+Excutable_path+""
    cmd=r"%s /quiet PrependPath=1 InstallAllUsers=1"%file_name
    os.chdir(Folder)
    obj=Popen(cmd,stdout=PIPE,stderr=PIPE)
    r,e=obj.communicate()
    if e:
        print e
    else:
        if r:
            print r
            shutil.rmtree(Folder,ignore_errors=True)
        else:
            print "Installed successfully"
            shutil.rmtree(Folder,ignore_errors=True)

    #shutil.copyfile(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 3.10\IDLE (Python 3.10 64-bit).lnk",r"C:\Users\omy\Desktop\IDLE (Python 3.10 64-bit).lnk")
    k=os.popen("net users").read()
    l=[]
    for i in k.split()[5:-4]:
        if "Administrator" not in i and "DefaultAccount" not in i and "Guest" not in i:
            if os.path.exists(r"C:\Users"+"\\"+i.strip()+"\\"+"Desktop") :
                val=r"C:\Users"+"\\"+i.strip()+"\\"+"Desktop\python.lnk"
                l.append(val)
    re_val=os.listdir(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs")
    for i in re_val:
        if "Python" in i:
            path="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\\"+i
            for j in os.listdir(path):
                if "IDLE" in j:
                    fullpath=r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\\"+i+"\\"+j+".lnk"
    #print fullpath
    for i in l:
        shutil.copyfile(fullpath,i)
except Exception as e:
    #print(e)
    print("Already Python exists")