Comment puis-je déterminer par programme si j'ai des privilèges d'écriture en utilisant C # dans .Net?

StackOverflow https://stackoverflow.com/questions/137031

Question

Comment puis-je déterminer si j'ai l'autorisation d'écriture sur une machine distante de mon intranet à l'aide de C # dans .Net?

Était-ce utile?

La solution

La réponse simple serait d’essayer et de voir. Les API de sécurité Windows ne sont pas pour les âmes sensibles, et il est possible que vous ayez une permission en écriture sans avoir la permission de voir les permissions!

Autres conseils

J'y ai également séjourné, la solution la plus fiable et la plus fiable que j'ai trouvée était la suivante:

bool hasWriteAccess = true;
string remoteFileName = "\\server\share\file.name"

try
{
    createRemoteFile(remoteFileName);   
}
catch (SystemSecurityException)
{
     hasWriteAccess = false;   
}

if (File.Exists(remoteFileName))
{
    File.Delete(remoteFileName);
}

return hasWriteAccess;

Découvrez cet article du forum.

http://bytes.com/forum/thread389514.html

Il décrit l'utilisation des objets dans System.Security.AccessControl , afin d’obtenir une liste des autorisations ACL pour un fichier. Il est uniquement disponible dans .NET 2.0 et supérieur. Je pense que cela suppose également que vous avez un réseau SMB. Je ne sais pas ce que cela ferait si vous utilisiez un réseau autre que Windows.

Si vous n'êtes pas sous .NET 2.0 ou version ultérieure, vous utilisez les API pInvoke et Win32 jazz habituelles.

ScottKoon écrit sur la vérification des autorisations Windows ACL. Vous pouvez également vérifier les autorisations de code géré à l'aide de CAS (Code Access Security). Ceci est une méthode spécifique à .Net pour limiter les autorisations. Notez que si l'utilisateur ne dispose pas d'autorisations en écriture, le code ne disposera jamais d'autorisations en écriture (même si CAS le dit bien) - les autorisations les plus restrictives entre les deux gagnent.

CAS est assez facile à utiliser - vous pouvez même ajouter des attributs déclaratifs au début de vos méthodes. Vous pouvez en savoir plus à l'adresse MSDN

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top