Win2000:
Est` client - server kotorye ispolzuut LPC. Kogda client zapuchen kak process, a server ne imeet znachenia (process ili service) vse rabotaet.
No esli client zapuchen kak service, a server takzhe ne imeet znachenia ( processs ili service) to NtConnectPort() vozvrachaet STATUS_BAD_IMPERSONATION_LEVEL. Hotia na NT ni kakih problem.
Elsi inicializiovat` SID dlia PORT handle to ni chego ne meniaetsia :
Variant 1:
CSecurityDescriptor sd;
sd.InitializeFromThreadToken();
sd.Allow("Everyone", 0xffffffff);
ObjectAttr.SecurityDescriptor = (SECURITY_DESCRIPTOR*)sd.m_pSD;
rc = pNtCreatePort(&m_hPortHandle, &ObjectAttr,
0xff, 0x100, 0x00000);
---
Variant 2:
PSECURITY_DESCRIPTOR pSD;
pSD = new SECURITY_DESCRIPTOR;
if(!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION))
{
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
delete pSD;
return -1;
}
// Set the DACL to allow EVERYONE
SetSecurityDescriptorDacl(pSD, TRUE, NULL, FALSE);
ObjectAttr.SecurityDescriptor = (SECURITY_DESCRIPTOR*)pSD;
---
Clienta proboval zapuskat` pod raznymi accountami, no ni kakik izmenenii. Vse eto rabotaet/nerabotaet v USER mode
Chto tut I upustil?
Esli nado code to mogu brosit` sdes`
thx
|