Gibt es eine API in Windows ähnlich wie Linux chown?Ändern Sie den Besitzer der Datei in Windows
5
A
Antwort
3
von hier genommen: http://www.perlmonks.org/?node_id=70562
// #includes omitted for the sake of sanity
HANDLE token;
char *filename = "somefile.txt";
char *newuser = "someuser";
DWORD len;
PSECURITY_DESCRIPTOR security = NULL;
PSID sidPtr = NULL;
int retValue = 1;
// Get the privileges you need
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) {
SetPrivilege(token, "SeTakeOwnershipPrivilege", 1);
SetPrivilege(token, "SeSecurityPrivilege", 1);
SetPrivilege(token, "SeBackupPrivilege", 1);
SetPrivilege(token, "SeRestorePrivilege", 1);
} else retValue = 0;
// Create the security descriptor
if (retValue) {
GetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security, 0, &len);
security = (PSECURITY_DESCRIPTOR)malloc(len);
if (!InitializeSecurityDescriptor(security, SECURITY_DESCRIPTOR_REVISION))
retValue = 0;
}
// Get the sid for the username
if (retValue) {
char domainbuf[4096];
DWORD sidSize = 0;
DWORD bufSize = 4096;
SID_NAME_USE sidUse;
LookupAccountName(NULL, newuser, sidPtr, &sidSize, domainbuf, &bufSize, &sidUse);
sid = (PSID)malloc(sidSize);
if (!LookupAccountName(NULL, string, (PSID)sid, &sidSize, domainbuf, &bufSize, &sidUse))
retValue = 0;
}
}
// Set the sid to be the new owner
if (retValue && !SetSecurityDescriptorOwner(security, sidPtr, 0))
retValue = 0;
// Save the security descriptor
if (retValue)
retValue = SetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security);
if (security) free(security);
if (sid) free(sid);
return retValue;
`
+3
Heilige Hölle, all das, um einen einfachen "Chown" -Ruf zu ersetzen! –
+0
Haben Sie die Funktion Rückgabetyp, Name und Parameter wegen Vagumerei weglassen? –
1
Sie könnten die cacls or icacls commands nützlich finden ... Sie sind nicht gerade einfach, obwohl
zu verwenden, können Sie ein wenig mehr Informationen zur Verfügung stellen was du versuchst zu tun?
Verwandte Themen
- 1. Wie ändern Sie den Besitzer einer Datenbank in SQL?
- 2. Wie kann ich den Besitzer der PostgreSql-Datenbank ändern?
- 3. Erhalte Datei Schöpfer/Besitzer Attribute in Java
- 4. Docker kopieren und ändern Besitzer
- 5. Btrieve (Datei) Besitzer Probleme
- 6. ändern Besitzer eines laufenden Prozesses
- 7. Referencing Outlet-Datei Besitzer
- 8. Besitzer ändern und Berechtigungen für Ordner
- 9. Ändern Sie den Namen der Upload-Datei in cURL?
- 10. Ändern Sie Besitzer auf Publish-Knoten in Drupal
- 11. Suchen Sie den Besitzer der mit meinem ViewModel verknüpften Ansicht
- 12. Gibt es eine Möglichkeit, den Besitzer eines JDialogs zu ändern?
- 13. Linux ändern Gruppenberechtigung mit Besitzer Berechtigungen
- 14. So identifizieren Sie den Besitzer einer Monitorsperre in Java
- 15. Abfrage auf Xcode Datei Besitzer und @property
- 16. Fine Uploader: Ändern Sie den Namen der Datei
- 17. Batch-Datei zum Ändern der Bildschirmauflösung in Windows 7
- 18. So ändern Sie den Besitzer einer Appengine-Anwendung (Umzug/Verkauf an eine neue Firma)
- 19. So finden Sie den Besitzer einer Datei oder eines Verzeichnisses in Python
- 20. Wie ermitteln Sie den letzten Prozess zum Ändern einer Datei?
- 21. Löschen Sie einen Ordner, der seinen Besitzer verloren hat
- 22. Android Developer Console - App-Besitzer ändern
- 23. Ändern Sie den Namen der generierten WAR-Datei und duplizieren Sie die WAR-Datei
- 24. Google/Youtube Api (v3) - überprüfen Sie den Besitzer eines Video
- 25. So ändern Sie den Datenquellentyp in einer Crystal Reports-Datei
- 26. Ändern Sie den Wert in app.config-Datei dynamisch
- 27. Ändern Sie den Titel einer Windows Store App
- 28. Warum kann ich den Besitzer der Datei nicht mit neuen Ansichten im iOS SDK verbinden?
- 29. Ändern der Windows-Hosts-Datei aus VBScript mit Administratorrechten
- 30. Wie erkennt man den "Besitzer" einer Website?
Das Windows-Sicherheitsmodell basiert nicht wirklich auf dem Besitz von Dateien, wie dies bei UNIX-Dateisystemen der Fall ist. Daher wird dieses Tool nicht wirklich häufig benötigt. –