Dans une application asp.net, j'ai une tâche qui transfère certains fichiers XML vers un dossier local de mon ordinateur. Je veux ensuite lire ces fichiers mais lorsqu'ils sont copiés dans mon dossier local, ils n'ont pas le compte utilisateur du service réseau configuré. Donc, ma question est de savoir comment, dans .Net C#, ajoutez-vous par programme le compte "Network Service" avec un contrôle total sur mes fichiers xml.Ajout par programme d'autorisations de sécurité aux fichiers en C#
5
A
Répondre
2
Le following article (intitulé "Définition des autorisations NTFS avec C#") va vous aider :)
1
essayer ce code si l'aide
public static bool CheckReadWriteAccces(string filePath, System.Security.AccessControl.FileSystemRights fileSystemRights)
{
FileInfo fileInfo = new FileInfo(filePath);
string str = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToUpper();
foreach (System.Security.AccessControl.FileSystemAccessRule rule in fileInfo.GetAccessControl().GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
if (str == rule.IdentityReference.Value.ToUpper())
return ((rule.AccessControlType == System.Security.AccessControl.AccessControlType.Allow) && (fileSystemRights == (rule.FileSystemRights & fileSystemRights)));
}
return false;
}
/// <summary>
/// Make a file writteble
/// </summary>
/// <param name="path">File name to change</param>
public static void MakeWritable(string path)
{
if (!File.Exists(path))
return;
File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);
}
0
La réponse se trouve dans la classe FileSecurity.
http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesecurity.aspx
4
Voir la FileSecurity class in MSDN
L'exemple de code suivant utilise la classe FileSecurity pour ajouter et puis supprimer une liste de contrôle d'accès d'entrée (ACL) à partir d'un fichier. Vous devez fournir un compte d'utilisateur ou de groupe valide pour exécuter cet exemple.
using System;
using System.IO;
using System.Security.AccessControl;
namespace FileSystemExample
{
class FileExample
{
public static void Main()
{
try
{
string fileName = "test.xml";
Console.WriteLine("Adding access control entry for "
+ fileName);
// Add the access control entry to the file.
AddFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.FullControl, AccessControlType.Allow);
Console.WriteLine("Removing access control entry from "
+ fileName);
// Remove the access control entry from the file.
RemoveFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.FullControl, AccessControlType.Allow);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
// Adds an ACL entry on the specified file for the specified account.
public static void AddFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
// Removes an ACL entry on the specified file for the specified account.
public static void RemoveFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
// Remove the FileSystemAccessRule from the security settings.
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
}
}
Questions connexes
- 1. En écho en toute sécurité aux données MIDI en C#
- 2. Entity Framework - Ajout par programme de FunctionImportMapping
- 3. Ajout d'un fournisseur d'appartenance par programme
- 4. libtool ajout de 'U' supplémentaires aux noms de fichiers .so
- 5. Manipulation de fichiers ogg multipiste par programme
- 6. Ajout de tâches par programme dans la taskList dans sharepoint
- 7. Ajout de métadonnées personnalisées à un site d'équipe par programme
- 8. Comment accéder par programme aux discussions Gmail?
- 9. Accès par programme/ajout/modification de sonneries de contacts
- 10. Ajout d'une couche TLS/SSL aux communications ..?
- 11. Ajout d'un hôte par programme (résolution de noms sous Windows)
- 12. Référence dynamique aux fichiers de ressources en C#
- 13. Ajout de méthodes aux contrôleurs
- 14. Ajout de matrices en C#?
- 15. Xcode: Ajout de fichiers existants aux groupes et fichiers Le panneau provoque une erreur de construction
- 16. Ajout de chiffres aux emplacements pairs et impairs (C#)
- 17. Redémarrer par programme IIS7 (C#)
- 18. Ajout d'une sécurité de script à une application
- 19. Connexion par programme aux casques Bluetooth sur Windows Mobile
- 20. Ajout d'un simple MAC aux paramètres d'URL?
- 21. Chemin d'accès aux fichiers programme sur l'ordinateur distant
- 22. Utilisation de dlsym et ajout de -ldl aux indicateurs
- 23. génération de code par programme en C# using codedom
- 24. aux prises avec l'ajout de contrôles utilisateur par programme
- 25. Accès aux styles par programme pour obtenir des valeurs
- 26. Modification de l'élément datalist C# par programme
- 27. Ajout de texte aux noms de classe
- 28. Modification/détection Stratégie de sécurité locale programme
- 29. Ajout de la prise en charge MPI à un programme C++
- 30. Ajout d'objets uniques aux données de base