관리자 권한 없이 응용 프로그램에서 Windows 서비스 시작(C )
관리자 권한 없이 별도의 응용 프로그램에서 Windows 서비스를 시작하는 것은 어려울 수 있습니다. . 그러나 관리자가 아닌 사람도 서비스 작업을 시작할 수 있는 안전하고 효과적인 솔루션이 있습니다.
가능한 접근 방식 중 하나는 설치 중에 서비스 개체와 관련된 권한을 수정하는 것입니다. 보안 설명자를 조정하면 관리자가 아닌 사용자에게 필요한 권한을 부여하여 이들이 서비스를 시작하고 중지할 수 있도록 할 수 있습니다.
ConvertStringSecurityDescriptorToSecurityDescriptor 및 SetServiceObjectSecurity와 같은 Windows API를 사용하면 서비스 개체의 보안 설정을 수정할 수 있습니다.
<code class="c++">wchar_t sddl[] = L"D:" L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)" // default permissions for local system L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)" // default permissions for administrators L"(A;;CCLCSWLOCRRC;;;AU)" // default permissions for authenticated users L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)" // default permissions for power users L"(A;;RP;;;IU)" // added permission: start service for interactive users ; PSECURITY_DESCRIPTOR sd; if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &sd, NULL)) { fail(); } if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd)) { fail(); }</code>
이러한 작업을 수행하려면 WRITE_DAC 권한이 있는 서비스 핸들이 필요합니다. SDDL에 (A;;RP;;IU) 문을 포함하면 관리자가 아닌 사용자에게 서비스를 시작할 수 있는 권한이 부여됩니다. 서비스를 중지하도록 허용하려면 WP 권한을 추가하여 다음과 같이 하십시오.
<code class="c++">L"(A;;RPWP;;;IU)" // added permissions: start service, stop service for interactive users</code>
이 접근 방식을 사용하면 시스템 보안을 손상시키지 않고 비관리자에게 서비스 제어 기능을 부여할 수 있습니다. 권한을 신중하게 구성하면 적절한 액세스 수준을 유지하면서 필요한 기능을 제공할 수 있습니다.
위 내용은 **관리자가 아닌 사람이 어떻게 C에서 Windows 서비스를 시작할 수 있습니까?**의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!