DragonNest/Extern/HShield/SDKs/Include/HsUserUtil.h
2024-12-19 09:48:26 +08:00

149 lines
4.6 KiB
C

/*********************************************************************************
Administartors그룹 권한을 가진 계정생성 헤더파일 - HsUserUtil.h
HsUserUtil V1.0 for Windows 2000, XP, 2003
Copyright (C), AhnLab, Inc. 2002-2008, All rights reserved.
버 전 :
주 석 : Administartors그룹 권한을 가진 계정생성 및 폴더권한 설정
*********************************************************************************/
#ifndef _HSUSERUTIL_H
#define _HSUSERUTIL_H
//ERROR CODE
#define HSUSERUTIL_ERR_OK 0x00000000 //성공
#define HSUSERUTIL_ERR_UNKNOWN 0x0005A001 //알수없는 오류
#define HSUSERUTIL_ERR_NOT_ADMIN 0x0005A002 //Administrator 권한이 아님
#define HSUSERUTIL_ERR_NOT_NT 0x0005A003 //NT계열이 아님
#define HSUSERUTIL_ERR_LOADDLL_FAIL 0x0005A004 //DLL동적 로딩 실패
#define HSUSERUTIL_ERR_DELSHADOWACNT_FAIL 0x0005A005 //쉐도우계정 패턴삭제 실패
#define HSUSERUTIL_ERR_DELHIDEIDINFO_FAIL 0x0005A006 //로그온시 유저계정 감추기기 위한 정보삭제 실패
#define HSUSERUTIL_ERR_DELSHADOWACNTINFO_FAIL 0x0005A007 //쉐도우계정정보 삭제실패
#define HSUSERUTIL_ERR_ADDSHADOWACNT_FAIL 0x0005A008 //쉐도우계정 생성실패
#define HSUSERUTIL_ERR_SHADOWACNT_NOT_EXIST 0x0005A009 //쉐도우계정 존재하지 않음
#define HSUSERUTIL_ERR_STRING_CONVERSION_FAIL 0x0005A00A //문자열 변환 실패
#define HSUSERUTIL_ERR_SETFLDRPERMISSION_FAIL 0x0005A10A //폴더권한주기 실패
#define HSUSERUTIL_ERR_GETGROUPSID_FAIL 0x0005A10B //그룹 SID 얻기 실패
#define HSUSERUTIL_ERR_GETSECINFO_FAIL 0x0005A10C //SD와 DACL정보 얻기실패
#define HSUSERUTIL_ERR_ADDNEWACE_FAIL 0x0005A10D //새 ACE 생성 실패
#define HSUSERUTIL_ERR_ADDNEWDACL_FAIL 0x0005A10E //새 DACL 생성 실패
#define HSUSERUTIL_ERR_COPYOLDDACL_FAIL 0x0005A10F //새 DACL에 기존DACL 복사 실패
#define HSUSERUTIL_ERR_ADDNEWACETONEWDACL_FAIL 0x0005A110 //새 DACL에 새 ACE 추가 실패
#define HSUSERUTIL_ERR_GETVOLUMEINFO_FAIL 0x0005A111 //드라이브 VOLUME INFO얻기 실패.
// Export API
#if defined(__cplusplus)
extern "C"
{
#endif
/*
@param
void
@retval
DWORD : ERROR_SUCCESS = 성공
그외의 리턴값 = 오류
@remarks
일반 사용자 계정에서 정상적으로 게임및 핵쉴드 보안기능을 구동하기 위해 핵쉴드 계정을
생성합니다.
해당 함수 호출이 성공적으로 완료되어야 일반 사용자 계정에서도 게임을
실행하고 게임 해킹 방어 기능을 수행할 수 있습니다.
이 때, 해당 함수는 관리자 계정으로 게임 프로그램, Install-Shield, 게임 런처등의 프로그램에서
호출합니다.
*/
DWORD __stdcall _AhnHsUserUtil_CreateUser ( );
/*
@param
LPTSTR : 권한을 부여할 경로
@retval
DWORD : ERROR_SUCCESS = 성공
그외의 리턴값 = 오류
@remarks
게임 프로그램이 NTFS 볼륨에 설치된 경우에는 해당 폴더에 대해서 일반 사용자 권한으로는
파일 쓰기 권한이 없어 게임이 정상적으로 동작하지 않을 수 있습니다.
예를 들어 게임 모듈에 대한 업데이트 프로그램이 실행되어도 게임이 설치된 폴더에
최신 파일을 쓰지 못하는 상황이 발생한다든지, 게임 실행 중에 게임 데이터를
저장하는데 실패할 수도 있습니다.
일반 사용자 계정에 대하여 게임 설치 폴더에 파일 쓰기 권한을 부여하려면
해당 함수를 사용함으로써 NTFS 쓰기 권한을 부여할 수 있습니다
*/
DWORD __stdcall _AhnHsUserUtil_SetFolderPermissionA ( char* szPathA );
DWORD __stdcall _AhnHsUserUtil_SetFolderPermissionW ( wchar_t* szPathW );
#if defined(UNICODE) | defined(_UNICODE)
#define _AhnHsUserUtil_SetFolderPermission _AhnHsUserUtil_SetFolderPermissionW
#else
#define _AhnHsUserUtil_SetFolderPermission _AhnHsUserUtil_SetFolderPermissionA
#endif // !UNICODE
/*
@param
void
@retval
DWORD : ERROR_SUCCESS = 성공
그외의 리턴값 = 오류
@remarks
일반 사용자 계정에서 정상적으로 게임및 핵쉴드 보안기능을 구동하기 위해 등록한
계정 정보를 삭제하며, 게임 제거시에 해당함수를 호출해야 합니다.
*/
DWORD __stdcall _AhnHsUserUtil_DeleteUser ( );
/*
@param
void
@retval
DWORD : ERROR_SUCCESS = ADMIN 권한이거나, 쉐도우 계정이 존재하는 경우.
그외의 리턴값 = 오류
@remarks
현재 로그인된 계정이 핵쉴드를 실행할 수 있는 권한을 가지고 있는지 확인하는 함수입니다.
*/
DWORD __stdcall _AhnHsUserUtil_IsEnableHSAdminRights ( );
/*
@param
void
@retval
DWORD : ERROR_SUCCESS = 핵쉴드 쉐도우 계정이 존재하는 경우.
HSUSERUTIL_ERR_SHADOWACNT_NOT_EXIST = 핵쉴드 쉐도우 계정이 존재하지 않는 경우.
그외의 리턴값 = 오류.
@remarks
현재 OS 에 핵쉴드 쉐도우 계정이 존재하는지 확인하는 함수입니다.
*/
DWORD __stdcall _AhnHsUserUtil_CheckHSShadowAccount( );
/*
@param
void
@retval
BOOL : TRUE = ADMIN 권한을 가지고 있는 경우.
FALSE = 어드민 권한을 가지고 있지 않은 경우.
@remarks
현재 로그인된 계정이 어드민 권한을 가지고 있는지 확인하는 함수입니다.
*/
BOOL __stdcall _AhnHSUserUtil_IsAdmin ();
#if defined(__cplusplus)
}
#endif
#endif //_HSUSERUTIL_H