Betrachten sie einen folgenden Code-SnippetUnreadable Dateiattribute auf Windows
#include <iostream>
#include <windows.h>
int main()
{
WIN32_FILE_ATTRIBUTE_DATA wfad;
GetFileAttributesEx(("C:\\TEMP\\noreadfile"), GetFileExInfoStandard, &wfad); //"noreadfile" is unreadable file
std::cout << wfad.dwFileAttributes; // 128
return 0;
}
Für eine lesbare Datei (Datei, die nicht lesen Berechtigungen oder die Datei hat, die ihre Leseberechtigungen gesetzt als „Verweigern“ in seinen Eigenschaften -> Registerkarte Sicherheit) unter Windows GetFileAttributesEx
gibt FILE_ATTRIBUTE_NORMAL
zurück, was bedeutet, dass no other attribute is set für diese Datei.
Dieses Attribut wird auch für schreib- und nicht schreibgeschützte Dateien zurückgegeben.
Wir verwenden diese Informationen, um die Berechtigungen für Dateien in unserem Produktcode festzulegen.
Wir folgerten, dass GetFileAttributesEx
möglicherweise falsche Attribut im Falle von nicht lesbaren Dateien zurückgibt. Wir fragen uns, ob unsere Schlussfolgerung richtig ist oder nicht. Wenn ja, ist das ein bekanntes Problem mit GetFileAttributesEx
?
Wenn nicht, dann
Was ist der richtige Weg, um die Dateiattribute zu bekommen (vielleicht Dateiberechtigungen?) Für eine unlesbaren Datei mit dem Windows-API oder, wenn möglich mit Boost-oder Standard C++ Bibliotheken Dateisystem?
Dateiattribute (z. B. schreibgeschützt, System, ausgeblendet usw.) haben nichts mit Dateisicherheit zu tun. Rufen Sie [GetNamedSecurityInfo'] (https://msdn.microsoft.com/en-us/library/aa446645) auf, um eine DACL (DACL) zu erhalten. – eryksun