2016-11-17 1 views
0

getan wird Ich brauche den freien Speicherplatz eines Ordners in Netzwerkspeicher (NAS), wo nur einen bestimmten Benutzer hat die volle Zugriffsrechte zu finden.GetDiskFreeSpaceEx Windows-API geben falsche Werte auch nach dem Identitätswechsel

Mit GetDiskFreeSpaceEx API in C++ gibt es mir falsche Werte (Müll) wenn ich versuche, auf diesen Ordner ohne Recht von einem normalen Domänenbenutzer zuzugreifen. Vor dem API Identitätswechsel i an den Benutzer, die vollen Zugriffsrecht hat, und es gibt keine Ausfälle während Identitätswechsel. Ich erwähnte Müll Wert aus dem Grund ist, dass, wenn ich anderen Ordner in anderen Laufwerk von gleichen Speicher zugreifen versuchen, i die gleichen Werte erhalten.

Wenn ich die Zugriffsrechte des Ordners auf „Alle“ und API ohne Identitätswechsel verwenden, ändern gibt es die richtigen Werte.

Für den Identitätswechsel, melden ich mit beidenLOGON32_LOGON_INTERACTIVE und LOGON32_LOGON_NETWORK versucht haben.

bin ich etwas fehlt hier? Irgendeine Art von zusätzlichen Erlaubnisrechten zu geben?

Jede Hilfe wäre willkommen.

Antwort

0

Das entsprechende Recht gemäß der MSDN-Dokumentation von GetDiskFreeSpaceEx ist "Die aufrufende Anwendung muss FILE_LIST_DIRECTORY Zugriffsrechte für dieses Verzeichnis haben.".

Was mich etwas beunruhigt ist der erste Teil, "die anrufende Anwendung ...". Identitätswechsel funktioniert bei Threads, aber MSDN sagt nicht "Der aufrufende Thread muss ...".

Eine andere Sorge wäre, wie Sie das NAS-Laufwerk benennen. Wenn Sie eine Laufwerksbuchstabenzuordnung verwenden, ist diese Laufwerkbuchstabenzuordnung möglicherweise nicht verfügbar, während Sie sich für einen anderen Benutzer ausgeben.

Verwandte Themen