2017-05-20 3 views
-2

개발중인 서비스가 ChangeServiceConfig2를 호출하여 구성 매개 변수를 변경해야합니다. 이 기능에는 서비스 핸들이 필요합니다. 그래서 핸들을 얻기 위해 서비스는 성공한 OpenSCManager와 나중에 OpenService를 호출합니다. OpenService 함수의 lpServiceName 매개 변수에서 서비스 이름을 지정했지만 "Access denied"가 표시됩니다. 매니페스트 파일의 액세스 권한을 "requireAdministrator"로 변경했지만 여전히 오류가 발생했습니다. 일반적으로 Windows 서비스가 어떻게 처리 할 수 ​​있습니까? .Windows 서비스가 어떻게 처리 할 수 ​​있습니까?

+0

OpenService()는 올바른 호출이지만 자체를 재구성하려면 관리자 권한으로 서비스를 실행해야합니다. 서비스가 실행되도록 구성된 사용자 계정은 무엇입니까? * 왜 서비스가 처음부터 스스로 재구성해야합니까? 그것은 매우 특별한 요구 사항입니다. –

+0

... 매니페스트 설정은 서비스에 아무런 영향을 미치지 않습니다. 서비스의 보안 컨텍스트는 전적으로 서비스 구성에 의해 결정됩니다. –

+0

보통'SERVICE_CHANGE_CONFIG'는 필요한 것이고,'Administrators'뿐만 아니라'SYSTEM'에게도 부여됩니다. 그러나 이것은 구체적인 서비스에 의존합니다. – RbMm

답변

0

서비스를 창조하는 lpServiceStartName 인수는 서비스에서 실행되는 보안 컨텍스트를 결정하는 documentation for CreateService에서

:이 매개 변수가 NULL

경우에 CreateService가 LocalSystem 계정을 사용합니다.

서비스가 관리자 권한으로 실행 되려면 계정 이름 대신 NULL을 지정해야합니다. 의견에 따르면 현재 로컬 서비스로 실행 중입니다. 관리자 권한을 부여하지 않습니다.

+0

해리에게 감사드립니다. 그것은 작동합니다. –

관련 문제