>백엔드 개발 >C++ >**관리자가 아닌 사람이 어떻게 C에서 Windows 서비스를 시작할 수 있습니까?**

**관리자가 아닌 사람이 어떻게 C에서 Windows 서비스를 시작할 수 있습니까?**

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-25 08:16:02437검색

**How Can Non-Administrators Start Windows Services in C  ?**

관리자 권한 없이 응용 프로그램에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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