> 백엔드 개발 > C++ > 본문

관리자가 아닌 사용자가 C에서 Windows 서비스를 어떻게 시작하고 중지할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-10-25 04:07:28
원래의
1041명이 탐색했습니다.

How Can Non-Administrator Users Start and Stop Windows Services in C  ?

관리자 권한 없이 응용 프로그램에서 Windows 서비스 시작(C )

질문:

방법 사용자가 관리자 권한 없이 비관리자 응용 프로그램에서 Windows 서비스를 시작하거나 중지할 수 있습니까?

답변:

관리자가 아닌 사용자에게 다음 기능을 부여하려면 Windows 서비스를 시작하고 중지하려면 서비스 권한을 수정하세요. 이 프로세스는 서비스 설치 중에 이상적으로 수행되어야 합니다.

다음 단계를 사용하십시오.

  1. 서비스 핸들 얻기: WRITE_DAC 권한.
  2. SDDL(보안 설명자) 생성: 대화형 사용자가 서비스를 시작할 수 있도록 허용하는 등 다양한 사용자 그룹에 대해 원하는 권한을 지정하는 SDDL 문자열을 구성합니다.
<code class="pre">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
  ;</code>
로그인 후 복사
  1. SD 변환 및 설정: SDDL 문자열을 보안 설명자로 변환하고 SetServiceObjectSecurity 함수를 사용하여 서비스 개체에 설정합니다.
<code class="pre">PSECURITY_DESCRIPTOR sd;

if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &amp;sd, NULL))
{
   fail();
}

if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd))
{
   fail();
}</code>
로그인 후 복사

관리자가 아닌 사용자에게도 서비스를 중지할 수 있는 권한을 부여하려면 SDDL 문자열에 WP 권한을 포함하세요.

<code class="pre">L"(A;;RPWP;;;IU)"                           
  // added permissions: start service, stop service for interactive users</code>
로그인 후 복사

에 대한 추가 SDDL 코드는 Wayne Martin의 블로그 항목을 참조하세요. 서비스 권한입니다.

위 내용은 관리자가 아닌 사용자가 C에서 Windows 서비스를 어떻게 시작하고 중지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿