Eryk Sun <eryk...@gmail.com> added the comment:
For me in Windows 10, os.listdir(u"C:\\Temp") uses the same sequence of WINAPI and NT system calls in 2.7 and 3.6. Setup the query for all files ("*"), and return the first matching entry: FindFirstFileW FindFirstFileExW NtOpenFile( ObjectAttributes=( ObjectName="\??\C:\Temp\", Attributes=OBJ_CASE_INSENSITIVE) DesiredAccess=( SYNCHRONIZE | FILE_LIST_DIRECTORY), ShareAccess=( FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE), OpenOptions=( FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT | FILE_OPEN_FOR_BACKUP_INTENT)) NtQuerDirectoryFileEx( FileInformationClass=FileBothDirectoryInformation, QueryFlags=SL_RETURN_SINGLE_ENTRY, FileName="*") Repeat for the remaining entries: FindNextFileW Return the next entry from a 4 KiB buffer. If the buffer is empty, refill it with the following call, until the query is exhausted (i.e. STATUS_NO_MORE_FILES): NtQuerDirectoryFileEx( FileInformationClass=FileBothDirectoryInformation, Length=4096) Unfortunately, many NT status codes map to ERROR_ACCESS_DENIED (5). If it's STATUS_ACCESS_DENIED (0xC0000022), then probably NtOpenFile failed. Try checking the last NT status value with ctypes. For example: >>> import os, ctypes >>> ntdll = ctypes.WinDLL('ntdll') >>> ntdll.RtlGetLastNtStatus.restype = ctypes.c_ulong >>> try: ... os.listdir(u'C:\\Users\\Administrator') ... except: ... print(hex(ntdll.RtlGetLastNtStatus())) ... 0xc0000022 Do you have any anti-malware programs running? If so, try disabling them. They can hook APIs or attach to the I/O stack with a filter driver (e.g. to deny an I/O request that's disallowed by a rule). If disabling your anti-malware software allows access, then you'll need to set a rule to grant access to Python 3. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36646> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com