Frage

Wie kann ich feststellen, ob ich die Schreibberechtigung auf einem entfernten Rechner habe in meinem Intranet C # in .NET?

War es hilfreich?

Lösung

Die einfache Antwort wäre, es zu versuchen und zu sehen. Die Windows-Sicherheits-APIs sind nicht für schwache Nerven, und kann möglich sein, Sie Schreibberechtigung haben, ohne Genehmigung mit den Berechtigungen anzusehen!

Andere Tipps

auch schon da, die beste und zuverlässigste Lösung, die ich war gefunden:

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;

Schauen Sie sich dieses Forum schreiben.

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

Es beschreibt die Objekte in der System.Security.AccessControl Namespace eine Liste der ACL-Berechtigungen für eine Datei zu erhalten. Es ist nur in .NET 2.0 und höher zur Verfügung. Ich denke, es geht auch davon aus, dass Sie ein SMB-Netzwerk haben. Ich bin mir nicht sicher, was es tun würde, wenn Sie ein nicht-Windows-Netzwerk verwendet hat.

Wenn Sie nicht auf .NET 2.0 oder höher, es ist der übliche pinvoke und Win32-API-Jazz.

ScottKoon ist über die oberen Fenster ACL-Berechtigungen schreiben. Sie können auch die verwalteten Code Berechtigungen prüfen mit CAS (Code Access Security). Dies ist eine .NET-spezifische Methode Berechtigungen zu beschränken. Beachten Sie, wenn der Benutzer Schreibrechte nicht, dann wird der Code nie Schreibrechte haben (auch wenn CAS sagt, es tut.) - die restriktivsten Berechtigungen zwischen den beiden win

CAS ist ziemlich einfach zu bedienen - Sie können sogar deklarative Attribute, die Sie den Start Ihrer Methoden hinzufügen. Sie können mehr unter MSDN

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top