そのため、現在いくつかのピンボーク関数を操作しようとしていますが、SECURITY_INFORMATION at の各フラグの値がどこにあるのかわかりません。
リンクはこちら
既に PInvoke サイトにアクセスしましたが、SECURITY_INFORMATION の定義が正しくないようです。ここ
ConvertSecurityDescriptorToStringSecurityDescriptor メソッドを呼び出そうとすると、次のエラーがスローされるため、間違っていると思います。
A call to PInvoke function 'ConvertSecurityDescriptorToStringSecurityDescriptor'
has unbalanced the stack. This is likely because the managed PInvoke signature
does not match the unmanaged target signature. Check that the calling
convention and parameters of the PInvoke signature match the target
unmanaged signature.
しかし、ここでも、私が提供した MSDN の記事に記載されている各フラグの 16 進数値を見つける方法を知りたいと思っています。人々が魔法のように値を生成し、その記事のどこにも文書化されていないにもかかわらず、値が正しいかのようです。
編集1
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool ConvertSecurityDescriptorToStringSecurityDescriptor(IntPtr SecurityDescriptor,
uint RequestedStringSDRevision,
SECURITY_INFORMATION SecurityInformation,
out IntPtr StringSecurityDescriptor,
out int StringSecurityDescriptorLen);
[Flags]
public enum SECURITY_INFORMATION {
OWNER_SECURITY_INFORMATION = 0x00000001,
GROUP_SECURITY_INFORMATION = 0x00000002,
DACL_SECURITY_INFORMATION = 0x00000004,
SACL_SECURITY_INFORMATION = 0x00000008,
UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000,
UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000,
PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000
}