@@ -66,34 +66,27 @@ public string? FullNameHumanized
66
66
public string FullNameHumanizedWithBrackes
67
67
=> string . IsNullOrEmpty ( Domain ) ? string . Empty : $ "({ Domain } \\ { Name } )";
68
68
69
- public unsafe AccessControlPrincipal ( string sid )
69
+ public AccessControlPrincipal ( string sid )
70
70
{
71
71
if ( string . IsNullOrEmpty ( sid ) )
72
72
return ;
73
73
74
74
Sid = sid ;
75
- PSID lpSid = default ;
76
- SID_NAME_USE snu = default ;
75
+ PInvoke . ConvertStringSidToSid ( sid , out var lpSid ) ;
77
76
78
- fixed ( char * cSid = sid )
79
- PInvoke . ConvertStringSidToSid ( new PCWSTR ( cSid ) , & lpSid ) ;
80
-
81
- PWSTR lpName = default ;
82
- PWSTR lpDomain = default ;
77
+ char [ ] lpName = [ ] ;
78
+ char [ ] lpDomain = [ ] ;
83
79
uint cchName = 0 , cchDomainName = 0 ;
84
80
85
81
// Get size of account name and domain name
86
- bool bResult = PInvoke . LookupAccountSid ( new PCWSTR ( ) , lpSid , lpName , & cchName , lpDomain , & cchDomainName , null ) ;
82
+ bool bResult = PInvoke . LookupAccountSid ( string . Empty , lpSid , lpName , ref cchName , lpDomain , ref cchDomainName , out _ ) ;
87
83
88
84
// Ensure requested capacity
89
- fixed ( char * cName = new char [ cchName ] )
90
- lpName = new ( cName ) ;
91
-
92
- fixed ( char * cDomain = new char [ cchDomainName ] )
93
- lpDomain = new ( cDomain ) ;
85
+ lpName = new char [ cchName ] ;
86
+ lpDomain = new char [ cchDomainName ] ;
94
87
95
88
// Get account name and domain
96
- bResult = PInvoke . LookupAccountSid ( new PCWSTR ( ) , lpSid , lpName , & cchName , lpDomain , & cchDomainName , & snu ) ;
89
+ bResult = PInvoke . LookupAccountSid ( string . Empty , lpSid , lpName , ref cchName , lpDomain , ref cchDomainName , out var snu ) ;
97
90
if ( ! bResult )
98
91
return ;
99
92
@@ -118,16 +111,14 @@ var x when
118
111
if ( snu == SID_NAME_USE . SidTypeUser || snu == SID_NAME_USE . SidTypeAlias )
119
112
{
120
113
uint size = 256 ;
121
- fixed ( char * cDomain = new char [ size ] )
122
- lpDomain = new ( cDomain ) ;
123
-
114
+ lpDomain = new char [ size ] ;
124
115
bResult = PInvoke . GetComputerName ( lpDomain , ref size ) ;
125
116
if ( ! bResult )
126
117
return ;
127
118
}
128
119
129
- Name = lpName . ToString ( ) ;
130
- Domain = lpDomain . ToString ( ) . ToLower ( ) ;
120
+ Name = lpName . AsSpan ( ) . ToString ( ) ;
121
+ Domain = lpDomain . AsSpan ( ) . ToString ( ) . ToLower ( ) ;
131
122
132
123
IsValid = true ;
133
124
}
0 commit comments