다음을 통해 공유


OpenServiceA 함수(winsvc.h)

기존 서비스를 엽니다.

구문

SC_HANDLE OpenServiceA(
  [in] SC_HANDLE hSCManager,
  [in] LPCSTR    lpServiceName,
  [in] DWORD     dwDesiredAccess
);

매개 변수

[in] hSCManager

서비스 제어 관리자 데이터베이스에 대한 핸들입니다. OpenSCManager 함수는 이 핸들을 반환합니다. 자세한 내용은 서비스 보안 및 액세스 권한을 참조하세요.

[in] lpServiceName

열 서비스의 이름입니다. 서비스 개체를 만들 때 CreateService 함수의 lpServiceName 매개 변수로 지정된 이름이며, 서비스를 식별하기 위해 사용자 인터페이스 애플리케이션에 표시되는 서비스 표시 이름이 아닙니다.

최대 문자열 길이는 256자입니다. 서비스 제어 관리자 데이터베이스는 문자의 대/소문자를 유지하지만 서비스 이름 비교는 항상 대/소문자를 구분하지 않습니다. 슬래시(/) 및 백슬래시(\)가 잘못된 서비스 이름 문자입니다.

[in] dwDesiredAccess

서비스에 대한 액세스 권한입니다. 액세스 권한 목록은 서비스 보안 및 액세스 권한을 참조하세요.

요청된 액세스 권한을 부여하기 전에 시스템은 서비스 개체와 연결된 보안 설명자의 임의 액세스 제어 목록에 대해 호출 프로세스의 액세스 토큰을 확인합니다.

반환 값

함수가 성공하면 반환 값은 서비스에 대한 핸들입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

서비스 제어 관리자가 설정할 수 있는 오류 코드는 다음과 같습니다. 다른 기능은 서비스 제어 관리자가 호출하는 레지스트리 함수에 의해 설정할 수 있습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
핸들에 서비스에 대한 액세스 권한이 없습니다.
ERROR_INVALID_HANDLE
지정한 핸들이 잘못되었습니다.
ERROR_INVALID_NAME
지정한 서비스 이름이 잘못되었습니다.
ERROR_SERVICE_DOES_NOT_EXIST
지정된 서비스가 없습니다.

설명

반환된 핸들은 OpenService라는 프로세스에 대해서만 유효합니다. CloseServiceHandle 함수를 호출하여 닫을 수 있습니다.

OpenService를 사용하려면 SC_MANAGER_CONNECT 이외에는 권한이 필요하지 않습니다.

예제

예제는 서비스 시작을 참조하세요.

참고

winsvc.h 헤더는 OPENService를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winsvc.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

SCM 핸들

서비스 함수

SetServiceObjectSecurity

StartService