6. FAQ o Win API |
Q> How to receive хэндл полиси? A> #include <ntsecapi.h>
#include <lmaccess.h>
void
InitLsaString (
PLSA_UNICODE_STRING LsaString,
LPWSTR String
)
{
DWORD StringLength;
if (String == NULL) {
LsaString-> Buffer = NULL;
LsaString-> Length = 0;
LsaString-> MaximumLength = 0;
return;
}
StringLength = wcslen (String);
LsaString-> Buffer = String;
LsaString-> Length = (USHORT) StringLength * sizeof (WCHAR);
LsaString-> MaximumLength = (USHORT) (StringLength+1) * sizeof (WCHAR);
}
//----------------------------------------------------------------------
NTSTATUS
OpenPolicy (
LPWSTR ServerName,
DWORD DesiredAccess,
PLSA_HANDLE PolicyHandle
)
{
LSA_OBJECT_ATTRIBUTES ObjectAttributes;
LSA_UNICODE_STRING ServerString;
PLSA_UNICODE_STRING Server = NULL;
//
//Always initialize the object attributes to all zeroes.
//
ZeroMemory (&ObjectAttributes, sizeof (ObjectAttributes));
if (ServerName! = NULL) {
//
//Make a LSA_UNICODE_STRING out of the LPWSTR passed in
//
InitLsaString (&ServerString, ServerName);
Server = &ServerString;
}
//
//Attempt to open the policy.
//
return LsaOpenPolicy (
Server,
&ObjectAttributes,
DesiredAccess,
PolicyHandle
);
}
|
2000 (c) DM