????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.219.31.133 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/Python-3.6.3/PC/ |
Upload File : |
''' This script gets the version number from ucrtbased.dll and checks whether it is a version with a known issue. ''' import sys from ctypes import (c_buffer, POINTER, byref, create_unicode_buffer, Structure, WinDLL) from ctypes.wintypes import DWORD, HANDLE class VS_FIXEDFILEINFO(Structure): _fields_ = [ ("dwSignature", DWORD), ("dwStrucVersion", DWORD), ("dwFileVersionMS", DWORD), ("dwFileVersionLS", DWORD), ("dwProductVersionMS", DWORD), ("dwProductVersionLS", DWORD), ("dwFileFlagsMask", DWORD), ("dwFileFlags", DWORD), ("dwFileOS", DWORD), ("dwFileType", DWORD), ("dwFileSubtype", DWORD), ("dwFileDateMS", DWORD), ("dwFileDateLS", DWORD), ] kernel32 = WinDLL('kernel32') version = WinDLL('version') if len(sys.argv) < 2: print('Usage: validate_ucrtbase.py <ucrtbase|ucrtbased>') sys.exit(2) try: ucrtbased = WinDLL(sys.argv[1]) except OSError: print('Cannot find ucrtbased.dll') # This likely means that VS is not installed, but that is an # obvious enough problem if you're trying to produce a debug # build that we don't need to fail here. sys.exit(0) # We will immediately double the length up to MAX_PATH, but the # path may be longer, so we retry until the returned string is # shorter than our buffer. name_len = actual_len = 130 while actual_len == name_len: name_len *= 2 name = create_unicode_buffer(name_len) actual_len = kernel32.GetModuleFileNameW(HANDLE(ucrtbased._handle), name, len(name)) if not actual_len: print('Failed to get full module name.') sys.exit(2) size = version.GetFileVersionInfoSizeW(name, None) if not size: print('Failed to get size of version info.') sys.exit(2) ver_block = c_buffer(size) if (not version.GetFileVersionInfoW(name, None, size, ver_block) or not ver_block): print('Failed to get version info.') sys.exit(2) pvi = POINTER(VS_FIXEDFILEINFO)() if not version.VerQueryValueW(ver_block, "", byref(pvi), byref(DWORD())): print('Failed to get version value from info.') sys.exit(2) ver = ( pvi.contents.dwProductVersionMS >> 16, pvi.contents.dwProductVersionMS & 0xFFFF, pvi.contents.dwProductVersionLS >> 16, pvi.contents.dwProductVersionLS & 0xFFFF, ) print('{} is version {}.{}.{}.{}'.format(name.value, *ver)) if ver < (10, 0, 10586): print('WARN: ucrtbased contains known issues. ' 'Please update the Windows 10 SDK.') print('See:') print(' http://bugs.python.org/issue27705') print(' https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk') sys.exit(1)