Existe-t-il une API dans Windows similaire à chown de Linux?Modifier le propriétaire du fichier dans Windows
5
A
Répondre
3
glanées ici: 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
Saint-Hell, tout ça pour remplacer un simple appel «chown»! –
+0
Avez-vous omis le type de retour de la fonction, le nom et les paramètres pour des raisons de vaguerie? –
1
Vous pourriez trouver utile cacls or icacls commands ... Ils ne sont pas exactement simple à utiliser si
Pouvez-vous fournir un peu plus d'informations sur ce que vous essayez de faire?
Questions connexes
- 1. Windows propriétaire sur Windows Mobile
- 2. Comment modifier dynamiquement la hauteur de la liste déroulante dessinée par le propriétaire dans Windows Mobile?
- 3. Obtention/définition du propriétaire du fichier en C#
- 4. modifier le contenu du fichier
- 5. Modifier le contenu du fichier
- 6. HP-UX préserver le propriétaire du fichier avec cpio
- 7. Modifier le propriétaire du diagramme de base de données dans SQL Server 2005
- 8. Comment obtenir le nom complet du propriétaire du fichier courrier dans Lotus Notes
- 9. Récupère le propriétaire du menu contextuel dans le code
- 10. Comment obtenir le nom du propriétaire actuel?
- 11. Qu'est-ce qui décrit le mieux le "propriétaire du fichier" dans l'objectif-c/cacao Nib?
- 12. Comment modifier le propriétaire d'une base de données SQL Server?
- 13. Modifier l'extension du fichier
- 14. Modifier le nom du fichier de téléchargement dans Cocoahttpserver
- 15. Puis-je changer le propriétaire du fichier enregistré via IIS (avec ASP.NET)
- 16. Modifier l'heure du fichier (touchez)
- 17. Comment définir le propriétaire du fichier sur Utilisateur connecté dans SAP ABAP?
- 18. Comment puis-je connecter le "propriétaire du fichier" avec un bouton dans une barre d'outils?
- 19. C# Spoof propriétaire du processus
- 20. Multiple XIBs même propriétaire de fichier
- 21. comment changer le propriétaire du fichier vidéo du serveur red5 à l'utilisateur apache
- 22. Numéro du propriétaire de l'application
- 23. Modifier l'utilisateur du service Windows par programme
- 24. Windows Mobile, modifier le numéro de version
- 25. WCF Thread propriétaire actuel
- 26. Linux modifier l'autorisation de groupe pour correspondre aux autorisations du propriétaire
- 27. comment visiter chaque ordinateur sur le réseau et modifier le fichier hôte dans Windows XP
- 28. Modifier la priorité du fil d'amélioration dans Windows
- 29. Modifier l'ordre dans le fichier .net resx
- 30. Modifier la chaîne dans le fichier txt
Le modèle de sécurité Windows n'est pas vraiment basé sur la propriété des fichiers, contrairement aux systèmes de fichiers UNIX. Ce n'est donc pas un outil très souvent nécessaire. –