Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자원 풀링
- 클라우드 서비스 소유자
- IT 자원
- 클라우드 제공자
- dhcp
- Community Cloud
- DHCP 설치
- 멀티테넌시
- 온디맨드식
- View Connection
- VMWare View Connection Serve
- 수평적 확장
- 운영관리제어의 축소
- 온 프레미스
- 수직적 확장
- DHCP 설정
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- VMware
- Error 1720
- 클라우드 소비자
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 제한된 이식성
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 클라우드 보안 취약성
- Virtual Private Cloud
- 정수형 데이터타입
- VMWare vSphere
- 커뮤니티 클라우드
- 가상 프라이빗 클라우드
- 클라우드 자원 관리자
Archives
- Today
- Total
한 걸음씩..
RegSystemToUser 본문
반응형
void RegSystemToUser()
{
//////////////////////////////////////////////////////////////////////////
// HKEY_CURRENT_USER
//////////////////////////////////////////////////////////////////////////
// Process ID를 Process Handle로 변경한다.
DWORD dwPid = GetPIDFromShortFileName("explorer.exe");
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ , FALSE, dwPid);
// Process Handle이 NULL이면, Open Failed 에러
if (hProcess == NULL)
return;
// 프로세서의 실행자 SID를 찾는다.
// 서비스 프로그램은 Local System 계정으로 로그인하였으므로, HKEY_CURRENT_USER로 레지스트리를
// Open할 경우 App와 다른 레지스트리 키로 접근이 된다.
// 그러므로, Process Token에서, SID를 확보해서 레지스트리를 직접 찾아 가야 한다.
HANDLE hTProcess;
DWORD dwSize;
// Process 핸들로 토큰을 얻는다. (Vista이므로, 될수 있으면 권한은 낮게... QUERY 권한만으로 접근)
if (OpenProcessToken(hProcess, TOKEN_QUERY, &hTProcess) == FALSE)
{
CloseHandle(hProcess);
return;
}
// NULL 값으로 토큰 정보를 요청하여, 토큰 정보가 저장될 버퍼의 크기를 받아온다.
GetTokenInformation(hTProcess, TokenUser, NULL, 0, &dwSize);
TOKEN_USER *sidUser = (TOKEN_USER *)malloc(dwSize);
if (GetTokenInformation(hTProcess, TokenUser, sidUser, dwSize, &dwSize) == 0)
{
free(sidUser);
CloseHandle(hTProcess);
CloseHandle(hProcess);
return;
}
// SID는 문자열이 아니고 구조체형이다.
// 문자형 SID로 변경한다.
LPTSTR pszSid;
ConvertSidToStringSid(sidUser[0].User.Sid, &pszSid);
free(sidUser);
CloseHandle(hTProcess);
CString strUserSID = pszSid;
LocalFree(pszSid);
// 레지스트리 오픈
strUserSID += L"\\Software\\microsoft\\windows\\currentversion\\run";
if( RegOpenKeyEx( HKEY_USERS, strUserSID, 0, KEY_READ, &hTestKey) == ERROR_SUCCESS )
{
//여기서 부턴 그냥 원래 하던데로 레지값 읽으면 됨
}
}
반응형
'프로그래밍' 카테고리의 다른 글
AES GCM Mode (0) | 2024.05.22 |
---|---|
jqGrid ip (0) | 2024.05.22 |
[ C++ ] 데이터모델 (2) | 2014.09.21 |
SplitString ( CString Parser ) (0) | 2014.07.14 |
GetLogOnUserName (0) | 2014.07.14 |