본문 바로가기

Programming/Windows&C#

(64)
[Windows/WinAPI] WindowsAPI / SCM에 대한 특정 액세스 권한 SCM에 대한 특정 액세스 권한 정리 액세스 권한 기능 SC_MANAGER_ALL_ACCESS0xF003F 접근 가능한 모든 테이블에 STANDARD_RIGHTS_REQUIRED을 추가 한다. SC_MANAGER_CREATE_SERVICE0x0002 서비스 개체를 만들고 데이터베이스를 추가 하기 위한 CreateService 함수를 호출하는데 필요하다. SC_MANAGER_CONNECT0x0001 서비스 제어 관리자에 연결. SC_MANAGER_ENUMERATE_SERVICE0x0004 데이터베이스에있는 서비스를 나열하는 EnumServicesStatus 또는 EnumServicesStatusEx 함수를 호출하는 데 필요합니다. 어떤 서비스가 생성 또는 삭제 될 때 알림을 수신 할 수 있도록 Notify..
[Windows/WinAPI] WindowsAPI / OpenSCManager SC_HANDLE WINAPI OpenSCManager( _In_opt_ LPCTSTR lpMachineName, -----① _In_opt_ LPCTSTR lpDatabaseName, -----② _In_ DWORD dwDesiredAccess -----③ ); 함수 설명 :서비스를 인스톨, 언인스톨 할 때 SCM을 오픈할 때 사용하는 함수. ① lpMachineName :대상 컴퓨터의 이름, NULL의 경우 로컬 컴퓨터 서비스 제어 관리자에 연결함. ② lpDatabaseName :서비스 제어 관리자 데이터베이스 이름, 이 매개 변수는 SERVICES_ACTIVE_DATABASE로 등록해야 하지만 NULL을 줄 경우로 SERVICES_ACTIVE_DATABASE로 인식한다. ③ dwDesiredAcc..
[Windows/WinAPI] WindowsAPI / SetServiceStatus BOOL WINAPI SetServiceStatus( _In_ SERVICE_STATUS_HANDLE hServiceStatus, _In_ LPSERVICE_STATUS lpServiceStatus ); 함수설명 :서비스의 상태가 변경되었을 떄 그 상태를 변경하고 호출하여 상태를 변경시키는 함수. 성공시 0이 아닌값 반환. ① hServiceStatus : 현재의 서비스의 핸들 값. ② lpServiceStatus : 바뀐 서비서의 상태 값.
[Windows/WinAPI] WindowsAPI / RegisterServiceCtrlHandler SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandler( _In_ LPCTSTR lpServiceName, -----① _In_ LPHANDLER_FUNCTION lpHandlerProc -----② ); 함수설명 :서비스 시작, 종료 재시작 등을 관리하는 콜백을 등록할 때 사용. 성공시 서비스 상태 변수가 넘어온다. ① lpServiceName : 서비스 이름 ② lpHandleProc : 서비스 시작, 종료, 재시작 등의 상태가 넘어오는 콜백 콜백 함수 - Handler() VOID WINAPI Handler( _In_ DWORD fdwControl ); 제어 코드 의미 SERVICE_CONTROL_CONTINUE 0x00000003 다시 시작 해야하는 일..
[Windows/WinAPI] WindowsAPI / StartServiceCtrlDispatcher BOOL WINAPI StartServiceCtrlDispatcher( _In_ const SERVICE_TABLE_ENTRY *lpServiceTable ); 함수 설명 : : 처음 서비스 프로그램을 실행할 때 실행 환경을 등록하는 함수. ① lpServiceTable : 서비스를 실행하기 위한 콜백, 서비스 이름 등을 입력하는 파라미터 성공시 0이 아닌 값을 리턴하며 실패시 GetLastError()를 이용하여 에러를 확인 가능하다. 리턴 코드 설명 ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 콘솔 응용프로그램이 아닌 서비스로 실행되는 경우. ERROR_INVALID_DATA 잘못된 항목이 포함되어 있다. ERROR_SERVICE_ALREADY_RUNNING 이미 서비스가 ..
[Windows/WinAPI] WindowsAPI / WritePrivateProfileString BOOL WINAPI WritePrivateProfileString( _In_ LPCTSTR lpAppName, ----① _In_ LPCTSTR lpKeyName, ----② _In_ LPCTSTR lpString, ----③ _In_ LPCTSTR lpFileName ----④ ); 함수설명 :정해진 섹션의 키 값중에서 STRING형을 쓴다. ① lpAppName : 섹션 이름② lpKeyName : 키 이름③ lpString : 입력되는 값④ lpFileName : INI 파일 이름 (전체 경로) 성공시 TRUE 반환
[Windows/WinAPI] WindowsAPI / GetPrivateProfileString DWORD WINAPI GetPrivateProfileString( _In_ LPCTSTR lpAppName, ----① _In_ LPCTSTR lpKeyName, ----② _In_ LPCTSTR lpDefault, ----③ _Out_ LPTSTR lpReturnedString, ----④ _In_ DWORD nSize, ----⑤ _In_ LPCTSTR lpFileName ----⑥ ); 함수 설명 :정해진 섹션의 키 값 중에서 STRING형을 가져온다. ① lpAppName : 섹션 이름② lpKeyName : 키 이름③ lpDefault : 값을 가져올 수 없을 때 지정되는 기본 값④ lpReturnedString : 결과 값⑤ nSize : 결과 값 버퍼의 길이⑥ lpFileName : INI..
[Windows/WinAPI] WindowsAPI / GetPrivateProfileInt UINT WINAPI GetPrivateProfileInt( _In_ LPCTSTR lpAppName, ----① _In_ LPCTSTR lpKeyName, ----② _In_ INT nDefault, ----③ _In_ LPCTSTR lpFileName ----④ ); 함수설명 :Ini 파일의 정해진 섹션의 키 값 중 INT형을 가져온다. lpAppName에 섹션의 이름, lpKeyName에 키 이름, nDefault에는 값을 가져오지 못햇을 경우 기본으로 할 값, lpFileName에는 Ini파일이 있는 전체 주소를 넣어주면 된다. ① lpAppName : 섹션 이름② lpKeyName : 키 이름③ lpDefault : 값을 가져올 수 없을 때 지정되는 기본 값④ lpFileName : INI 파일..