다음을 통해 공유


OpenSCManagerA 함수(winsvc.h)

지정된 컴퓨터에서 서비스 제어 관리자에 대한 연결을 설정하고 지정된 서비스 제어 관리자 데이터베이스를 엽니다.

구문

SC_HANDLE OpenSCManagerA(
  [in, optional] LPCSTR lpMachineName,
  [in, optional] LPCSTR lpDatabaseName,
  [in]           DWORD  dwDesiredAccess
);

매개 변수

[in, optional] lpMachineName

대상 컴퓨터의 이름입니다. 포인터가 NULL이거나 빈 문자열을 가리키는 경우 함수는 로컬 컴퓨터의 서비스 제어 관리자에 연결됩니다.

[in, optional] lpDatabaseName

서비스 제어 관리자 데이터베이스의 이름입니다. 이 매개 변수는 SERVICES_ACTIVE_DATABASE 설정해야 합니다. NULL인 경우 기본적으로 SERVICES_ACTIVE_DATABASE 데이터베이스가 열립니다.

[in] dwDesiredAccess

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

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

SC_MANAGER_CONNECT 액세스 권한은 이 함수를 호출하여 암시적으로 지정됩니다.

반환 값

함수가 성공하면 반환 값은 지정된 서비스 제어 관리자 데이터베이스에 대한 핸들입니다.

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

다음 오류 코드는 SCM에서 설정할 수 있습니다. 다른 오류 코드는 SCM에서 호출하는 레지스트리 함수에서 설정할 수 있습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
요청된 액세스가 거부되었습니다.
ERROR_DATABASE_DOES_NOT_EXIST
지정된 데이터베이스가 없습니다.

설명

프로세스에서 OpenSCManager 함수를 사용하여 서비스 제어 관리자 데이터베이스에 대한 핸들을 열면 시스템은 요청된 액세스 권한을 부여하기 전에 보안 검사 수행합니다. 자세한 내용은 서비스 보안 및 액세스 권한을 참조하세요.

다른 컴퓨터의 서비스에 연결할 때 현재 사용자에게 적절한 액세스 권한이 없는 경우 OpenSCManager 함수 호출이 실패합니다. 원격으로 서비스에 연결하려면 LOGON32_LOGON_NEW_CREDENTIALS 사용하여 LogonUser 함수를 호출한 다음, OpenSCManager를 호출하기 전에 ImpersonateLoggedOnUser를 호출합니다. 원격으로 서비스에 연결하는 방법에 대한 자세한 내용은 서비스 및 RPC/TCP를 참조하세요.

관리자 권한이 있는 프로세스만 CreateService 함수에서 사용할 수 있는 데이터베이스 핸들을 열 수 있습니다.

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

예제

예제는 서비스의 구성 변경을 참조하세요.

참고

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

요구 사항

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

추가 정보

CloseServiceHandle

CreateService

EnumServicesStatusEx

OpenService

SCM 핸들

서비스 함수