homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author earonesty
Recipients Billy McCulloch, JDM, Paul Doom, earonesty, eryksun, georg.brandl, ncoghlan, paul.moore, python-dev, rocco.matano, rupole, serhiy.storchaka, steve.dower, takluyver, tim.golden, zach.ware
Date 2019年07月01日.21:12:06
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1562015526.25.0.42771094802.issue22107@roundup.psfhosted.org>
In-reply-to
Content
Series of operations needed to answer the questions os.access is not answering on windows:
bool CanAccessFolder( LPCTSTR folderName, DWORD genericAccessRights )
{
 bool bRet = false;
 DWORD length = 0;
 if (!::GetFileSecurity( folderName, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION 
 | DACL_SECURITY_INFORMATION, NULL, NULL, &length ) && 
 ERROR_INSUFFICIENT_BUFFER == ::GetLastError()) {
 PSECURITY_DESCRIPTOR security = static_cast< PSECURITY_DESCRIPTOR >( ::malloc( length ) );
 if (security && ::GetFileSecurity( folderName, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION
 | DACL_SECURITY_INFORMATION, security, length, &length )) {
 HANDLE hToken = NULL;
 if (::OpenProcessToken( ::GetCurrentProcess(), TOKEN_IMPERSONATE | TOKEN_QUERY | 
 TOKEN_DUPLICATE | STANDARD_RIGHTS_READ, &hToken )) {
 HANDLE hImpersonatedToken = NULL;
 if (::DuplicateToken( hToken, SecurityImpersonation, &hImpersonatedToken )) {
 GENERIC_MAPPING mapping = { 0xFFFFFFFF };
 PRIVILEGE_SET privileges = { 0 };
 DWORD grantedAccess = 0, privilegesLength = sizeof( privileges );
 BOOL result = FALSE;
 
 mapping.GenericRead = FILE_GENERIC_READ;
 mapping.GenericWrite = FILE_GENERIC_WRITE;
 mapping.GenericExecute = FILE_GENERIC_EXECUTE;
 mapping.GenericAll = FILE_ALL_ACCESS;
 
 ::MapGenericMask( &genericAccessRights, &mapping );
 if (::AccessCheck( security, hImpersonatedToken, genericAccessRights, 
 &mapping, &privileges, &privilegesLength, &grantedAccess, &result )) {
 bRet = (result == TRUE);
 }
 ::CloseHandle( hImpersonatedToken );
 }
 ::CloseHandle( hToken );
 }
 ::free( security );
 }
 }
 
 return bRet;
}
History
Date User Action Args
2019年07月01日 21:12:06earonestysetrecipients: + earonesty, georg.brandl, paul.moore, ncoghlan, rupole, tim.golden, python-dev, takluyver, zach.ware, serhiy.storchaka, eryksun, steve.dower, rocco.matano, Billy McCulloch, Paul Doom, JDM
2019年07月01日 21:12:06earonestysetmessageid: <1562015526.25.0.42771094802.issue22107@roundup.psfhosted.org>
2019年07月01日 21:12:06earonestylinkissue22107 messages
2019年07月01日 21:12:06earonestycreate

AltStyle によって変換されたページ (->オリジナル) /