Håller på att bygga ett filhanteringsystem där användarna blir verifierade emot en domän...Läsa/Skriva ntfs rättigheter
Ett litet problem jag har stött på är att användarna måste kunna läsa samt ändra ntfs rättigheter på deras "lokala mappar". Efter lite undersökningar hittade jag att .NET inte stödjer skrivning/läsning av ntfs rättigheter, dock så gör ADSI det.
Problemet uppstod då alla exempel som följde med var skrivna i vb-script, och då jag inte är speciellt high-tech måste jag ha lite hjälp med detta...
Vad jag vill göra är följande:
En inloggad användare (iis:en är inställd på windows auth... dvs processen körs med användarens rättigheter (under användarens konto)) skall kunna läsa av ifall han/hon har rättigheter att läsa en mapp, och ifall de kan det skall de även kunna se vilka typer av rättigheter de har (read,write,list ect).
Användaren skall kunna tilldela rättigheter på mappar till andra användare, så att A kan läsa en mapp som B har gett denne rättigheter till. (Kod exempel skulle vara extremt uppskattat:)
Upptäckte dock ett stort problem när jag satt och pillade ihop en klass som kollar vem som har rättigheter till en mapp (inte vilka rättgheter utan enbart att de har någon form av access)
<code>
public class Init
{
private string user;
private System.Management.ManagementObject manObj;
private System.Management.ManagementPath manPath;
public Init(string _user)
{
this.user = _user;
}
public string User
{
get
{
return this.user;
}
}
public string[] Accessible(string Path)
{
this.manPath = new System.Management.ManagementPath( @"ROOT\CIMV2:Win32_LogicalFileSecuritySetting.Path=""c:\\test""");
this.manObj = new System.Management.ManagementObject(this.manPath);
bool enablePrivileges = this.manObj.Scope.Options.EnablePrivileges;
System.Management.ManagementBaseObject mboOutParameter = this.manObj.InvokeMethod("GetSecurityDescriptor",null,null);
System.Management.ManagementBaseObject mboDescriptor = ((System.Management.ManagementBaseObject)mboOutParameter.Properties["Descriptor"].Value);
this.manObj.Scope.Options.EnablePrivileges = enablePrivileges;
System.Management.ManagementBaseObject[] daclObj = ((System.Management.ManagementBaseObject[])mboDescriptor.Properties["DACL"].Value);
System.Management.ManagementBaseObject mboTrustee;
string Result = null;
for(int i = 0; i < daclObj.Length; i++)
{
mboTrustee = ((System.Management.ManagementBaseObject)
daclObj[i].Properties["Trustee"].Value);
Result += (mboTrustee.Properties["Domain"].Value + @"\" +mboTrustee.Properties["Name"].Value) + ";";
}
return Result.Split(';');
}
}
</code>
När en användare som inte tillhörde gruppen domain admins accessade sidan så throwades ett event som sa "Access Denied"... Kan tillägga att användaren ligger i listan över användare och har full kontroll över mappen som angavs.
Vore tacksam för hjälpande svar:)!