2009-01-28 7 views
0

Y at-il un moyen de changer le propriétaire du fichier enregistré en utilisant IIS sur Windows Server. Le plus facile sera le mieux. Ce n'est pas grave non plus, cela doit être fait pendant la sauvegarde ou la modification du propriétaire du fichier après que le fichier a déjà été sauvegardé sur le disque. Un exemple dans ASP.NET est fortement recommandé.Puis-je changer le propriétaire du fichier enregistré via IIS (avec ASP.NET)

+0

Pourquoi le propriétaire de la question du fichier? L'autorisation du fichier n'est-elle pas suffisante? – StingyJack

Répondre

0

Bien que ce ne soit pas un exemple personnalisé, je crois que votre réponse réside dans l'espace de noms System.Security.AccessControl.

Jetez un oeil à la classe FileSecurity qui vous permet d'identifier les règles et les autorisations. La classe FileSecurity est utilisée par des méthodes telles que File.Create().

1

En théorie, il devrait être assez simple. Vous devriez être capable de faire quelque chose comme ça pour changer la propriété d'un fichier existant:

string domain = "domain"; 
string user = "username"; 

FileInfo info = new FileInfo(@"c:\test.txt"); 

FileSecurity security = info.GetAccessControl(); 

System.Security.Principal.NTAccount newOwner = 
    new System.Security.Principal.NTAccount(domain, user); 

security.AddAccessRule(
     new FileSystemAccessRule(newOwner, FileSystemRights.FullControl, 
      AccessControlType.Allow)); 
security.SetAccessRuleProtection(true, false); 
security.SetOwner(newOwner); 

info.SetAccessControl(security); 

En pratique, cela ne fonctionne pas en réalité en raison d'une limitation que Windows impose. Windows ne vous autorisera pas à modifier le propriétaire du fichier à autre chose que l'utilisateur actuel ou le groupe d'administrateurs. Quand il atteint la dernière ligne, vous obtiendrez l'exception "L'identifiant de sécurité n'est pas autorisé à être le propriétaire de cet objet". Googling suggère qu'il est peut-être possible de contourner ce problème, mais je n'ai pas réussi à faire marcher le travail quand j'ai essayé dans le passé. Je serais très intéressé d'entendre si quelqu'un avait réussi à faire le travail.

1

Un utilisateur peut attribuer la propriété à d'autres utilisateurs s'ils possèdent le privilège Restaurer les fichiers et les répertoires. Ceci est désactivé par défaut, vous devez donc l'activer avant d'essayer de définir le propriétaire. .Net n'a pas de support intégré pour cela, donc vous aurez besoin de PInvoke AdjustTokenPrivileges et d'utiliser d'autres fonctions non managées pour obtenir les entrées pour cela.

J'ai écrit une description détaillée de son utilisation on my blog