감사
ENSURE_STATE(!!m_serviceHandle)
CAutoPtr<PSECURITY_DESCRIPTOR *> pSecurityDescriptor;
DWORD bytesNeeded = 0;
if(::QueryServiceObjectSecurity(serviceHandle, DACL_SECURITY_INFORMATION, &pSecurityDescriptor, 0, &bytesNeeded) == FALSE)
{
서비스의 DACL을 업데이트 난 함수를 호출이 후 지금
managerHandle.Attach(::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS));
serviceHandle.Attach(::CreateService(managerHandle, serviceName, serviceDisplayName,
SERVICE_CHANGE_CONFIG | SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_INTERROGATE,
serviceType, startCode, errorControl, path,
groupName, NULL, NULL, NULL, NULL));
::ChangeServiceConfig2(m_serviceHandle, SERVICE_CONFIG_DESCRIPTION, &serviceDesc);
service.Detach();
Service Security and Access Rights에 대한 설명서는 acce 오른쪽 READ_CONTROL
은 QueryServiceObjectSecurity
으로 전화해야합니다.
CreateService
으로 전화 할 때 핸들 요청한 액세스 권한 목록에 READ_CONTROL
을 추가하십시오.
출처
2014-11-08 20:34:06
arx
Johnson, arx, 답장을 보내 주셔서 감사합니다. READ_CONTROL을 추가해도 문제가 해결되지 않지만 SERVICE_ALL_ACCESS를 설정하면 문제가 해결되지만 READ_CONTROL이 여기에없는 내용을 해결할 수 있어야하므로 의미가 없습니다. 정말 필요하지 않은 경우 처리 할 추가 액세스를 추가하고 싶지 않습니다. – NxC
[MCVE] (http://stackoverflow.com/help/mcve)를 제공 할 수 있습니까? (그래도 손잡이가 완전한 권한을 갖기 위해 상처를 입지는 않습니다.) –
QueryServiceObjectSecurity 직후에 다른 호출을 만들기 위해 SetServiceObjectSecurity에 핸들이 필요한 WRITE_DAC이 문제가 추가되었습니다. 정말 고마워요. 시간을 내 주셔서 감사합니다. – NxC