Esiste un'API in Windows simile a Linux chown?Cambia proprietario di file in Windows
5
A
risposta
3
Tratto da qui: 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
Santo inferno, tutto questo per sostituire una semplice chiamata "chown"! –
+0
Hai omesso la funzione restituire tipo, nome e parametri per motivi di vaghezza? –
1
si potrebbe trovare il utile cacls or icacls commands ... Non sono esattamente facile da usare anche se
può fornire un po 'più di informazioni su cosa stai cercando di fare?
Problemi correlati
- 1. acquisizione di attributi del proprietario del file/proprietario in Java
- 2. Cambia proprietario e gruppo in c
- 3. Cambia caso di un file su Windows?
- 4. diventa proprietario di un file C#
- 5. Cambia proprietario del diagramma del database in SQL Server 2005
- 6. La codifica dei file cambia in modo ricorsivo su Windows?
- 7. trovare file Proprietario/Creatore in C#
- 8. Condivisione/autorizzazioni di file condivisi/proprietario (Docker)
- 9. Trova il proprietario di un file in unix
- 10. Cambia "Dimensione carattere Windows (DPI)" in PowerShell?
- 11. Cambia percorso globale compositore (Windows)
- 12. Cambia lo sfondo di Windows da Python
- 13. Controllo delle autorizzazioni del proprietario del file
- 14. Come determinare il proprietario del file su Windows utilizzando python senza pywin32
- 15. Qual è il proprietario del file (nel generatore di interfaccia)?
- 16. Cambia l'estensione del file
- 17. Esiste un comando per restituire il proprietario di un file?
- 18. Cambia interprete Python predefinito su Windows XP
- 19. Compilazione file preelaborato in precedenza cambia output
- 20. Cambia carattere in ggplot2 su Windows vs Mac
- 21. Android cambia audio di qualsiasi file video
- 22. host Windows non file di lavoro
- 23. Windows Form: cambia origine della prima cella di dataGridView?
- 24. Stash cambia su file specifici
- 25. Impostazione proprietario di oggetti in un bucket S3
- 26. Notifica quando un file cambia?
- 27. Connessione del proprietario del file alla visualizzazione del numero
- 28. Il file Data Core Pod CocoaPods proprietario non è accessibile
- 29. equivalente in file batch di Windows
- 30. RotatingFileHandler "File di testo occupato" in Windows
Il modello di sicurezza di Windows non si basa proprio sulla proprietà dei file come i file system UNIX, quindi questo non è realmente uno strumento che è necessario molto spesso. –