Forums Neueste Beiträge
 

Implementierung der EditSecurity Funktion,...

16/06/2009 - 05:54 von Kerem Gümrükcü | Report spam
Hallo,

ohne großartig jetzt drumherum zu reden. Ich versuche die EditSecurity
Funktion nach C# zu übersetzten.

Meine Frage ist (hatte ich auch mal früher hier gestellt, aber dann das
Problem
mal zurückgestellt und irgendwann war es dann auch nicht mehr nötig!), ob
jemand das schon implementiert hat. Wenn ja, wàre etwas Code echt super!
Hier ist die Signatur des Interfaces und der PInvoke, falls jemand mal sehen
will wie das aussieht,...

[DllImport("aclui.dll", SetLastError = true, CharSet =
CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EditSecurity(
[In] IntPtr hWnd,
[MarshalAs(UnmanagedType.Interface)]
[In][Out] ISecurityInformation SecurityInformation
);

public enum SiAccessFlags : int
{
Specific = 0x00010000,
General = 0x00020000,
Container = 0x00040000,
Property = 0x00080000
}

public enum SiCallbackMessage : uint
{
Release = 1,
Create = 2,
InitDialog = 0x400 + 1 //WM_USER + 1
}

public enum SiObjectInfoFlags : int
{
EditPerms = 0x00000000,
EditOwner = 0x00000001,
EditAudits = 0x00000002,
Container = 0x00000004,
ReadOnly = 0x00000008,
Advanced = 0x00000010,
Reset = 0x00000020,
OwnerReadOnly = 0x00000040,
EditProperties = 0x00000080,
Recurse = 0x00000100,
NoAclProtect = 0x00000200,
NoTreeApply = 0x00000400,
PageTitle = 0x00000800,
ServerIsDc = 0x00001000,
ResetDaclTree = 0x00004000,
ResetSaclTree = 0x00008000,
ObjectGuid = 0x00010000,
EditEffective = 0x00020000,
ResetDacl = 0x00040000,
ResetSacl = 0x00080000,
ResetOwner = 0x00100000,
NoAdditionalPermission = 0x00200000,
ViewOnly = 0x00400000,
PermsElevationRequired = 0x01000000,
AuditsElevationRequired = 0x02000000,
OwnerElevationRequested = 0x04000000,
MayWrite = 0x10000000,
All = EditPerms | EditOwner | EditAudits
}

public enum SiPageType : int
{
Perm = 0,
AdvPerm,
Audit,
Owner,
Effective,
TakeOwnership
}

[Flags]
public enum SecurityInformation : uint
{
Owner = 0x00000001,
Group = 0x00000002,
Dacl = 0x00000004,
Sacl = 0x00000008,
Label = 0x00000010,

ProtectedDacl = 0x80000000,
ProtectedSacl = 0x40000000,
UnprotectedDacl = 0x20000000,
UnprotectedSacl = 0x10000000
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SiInheritType
{
public IntPtr Guid;
public int Flags;
public IntPtr Name; // string
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SiObjectInfo
{
public SiObjectInfoFlags Flags;
public IntPtr Instance;
public IntPtr ServerName; // string
public IntPtr ObjectName; // string
public IntPtr PageTitle; // string
public Guid ObjectType;
}

[ComImport, Guid("78D76A01-90B7-4b82-9F0B-020978572589"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISecurityInformation
{
int GetObjectInformation(
[Out] out SiObjectInfo ObjectInfo
);
int GetSecurity(
[In] SecurityInformation RequestedInformation,
[Out] out IntPtr SecurityDescriptor,
[In] bool Default
);
int SetSecurity(
[In] SecurityInformation SecurityInformation,
[In] IntPtr SecurityDescriptor
);
int GetAccessRights(
[In] ref Guid ObjectType,
[In] SiObjectInfoFlags Flags,
[Out] out IntPtr Access,
[Out] out int Accesses,
[Out] out int DefaultAccess
);
int MapGeneric(
[In] ref Guid ObjectType,
[In] ref byte AceFlags,
[In] ref int Mask
);
int GetInheritTypes(
[Out] out IntPtr InheritTypes,
[Out] out int InheritTypesCount
);
int PropertySheetPageCallback(
[In] IntPtr hWnd,
[In] SiCallbackMessage Msg,
[In] SiPageType Page
);
}

Hier ist die Originalfunktion:

[EditSecurity Function]
http://msdn.microsoft.com/en-us/library/aa446618(VS.85).aspx

Danke schon mal,...

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."
 

Lesen sie die antworten

#1 Carl-Christian Schaffert
16/06/2009 - 06:33 | Warnen spam
Hallo Kerem, guten Morgen

"Kerem Gümrükcü" schrieb im Newsbeitrag
news:
Hallo,

ohne großartig jetzt drumherum zu reden. Ich versuche die EditSecurity
Funktion nach C# zu übersetzten.

Meine Frage ist (hatte ich auch mal früher hier gestellt, aber dann das
Problem
mal zurückgestellt und irgendwann war es dann auch nicht mehr nötig!), ob
jemand das schon implementiert hat. Wenn ja, wàre etwas Code echt super!
Hier ist die Signatur des Interfaces und der PInvoke, falls jemand mal
sehen
will wie das aussieht,...




ist das was du benötigst nicht schon làngst gemacht? Schaue mal hier:
http://msdn.microsoft.com/de-de/lib...ntrol.aspx

Gruß Carl

Ähnliche fragen