관리자 권한 없이 애플리케이션에서 Windows 서비스 제어
Windows 서비스는 사용자 개입 없이 백그라운드에서 장기 실행 작업을 실행할 수 있는 편리한 방법을 제공합니다. . 그러나 기본적으로 이러한 서비스를 시작하거나 중지하려면 관리자 권한이 필요합니다. 이로 인해 사용자를 대신하여 서비스를 관리해야 하는 애플리케이션에 제한이 발생합니다.
해결책
이 문제에 대한 해결책은 서비스 개체의 권한을 수정하는 데 있습니다. 이를 통해 애플리케이션은 높은 권한 없이도 서비스와 상호 작용할 수 있습니다. 다음은 C를 사용한 제안된 접근 방식입니다.
<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)) { // Handle error } if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd)) { // Handle error }</code>
설명
이 코드는 지정된 서비스의 보안 설명자를 열고 해당 DACL(임의 액세스 제어 목록)을 수정합니다. 대화형 사용자(관리자가 아닌 사용자)에게 "서비스 시작" 권한을 부여하는 새로운 ACE(액세스 제어 항목)를 추가합니다.
서비스도 중지하려면 "서비스 중지" 권한을 추가하세요(WP )을 목록으로 추가:
<code class="c++">L"(A;;RPWP;;;IU)" // added permissions: start service, stop service for interactive users</code>
서비스 개체의 권한을 수정하면 관리자 권한 상승 없이 Windows 서비스를 원활하게 관리하는 기능을 애플리케이션에 부여할 수 있습니다.
위 내용은 응용 프로그램이 관리자 권한 없이 Windows 서비스를 어떻게 제어할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!