>  기사  >  백엔드 개발  >  응용 프로그램이 관리자 권한 없이 Windows 서비스를 어떻게 제어할 수 있습니까?

응용 프로그램이 관리자 권한 없이 Windows 서비스를 어떻게 제어할 수 있습니까?

DDD
DDD원래의
2024-10-25 09:27:28576검색

How Can Applications Control Windows Services Without Administrator Privileges?

관리자 권한 없이 애플리케이션에서 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, &amp;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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.