yunchansik

POST : 분류없음

환경 변수 확장

#include <windows.h>

#include <tchar.h>

#include <stdio.h>

int main()

{

    DWORD chValue =

        ExpandEnvironmentStrings(TEXT("PATH='%PATH%'"), NULL, 0);

    PTSTR pszBuffer = new TCHAR[chValue];

    chValue =

        ExpandEnvironmentStrings(TEXT("PATH='%PATH%'"),

                                 pszBuffer, chValue);

   

    _tprintf(TEXT("%s\r\n"), pszBuffer);

    delete [] pszBuffer;

}

top

posted at

2009/01/19 18:47


POST : 분류없음

환경 변수 출력

void DumpEnvStrings()

{

    PTSTR pEnvBlock = GetEnvironmentStrings();

 

    TCHAR szName[MAX_PATH];

    TCHAR szValue[MAX_PATH];

    PTSTR pszCurrent = pEnvBlock;

    HRESULT hr = S_OK;

    PCTSTR pszPos = NULL;

    int current = 0;

 

    while (pszCurrent != NULL)

    {

        if (*pszCurrent != TEXT('='))

        {

            pszPos = _tcschr(pszCurrent, TEXT('='));

            pszPos++;

 

            size_t cbNameLength =

                (size_t)pszPos - (size_t)pszCurrent - sizeof(TCHAR);

            hr = StringCbCopyN(szName,

                MAX_PATH, pszCurrent, cbNameLength);

            if (FAILED(hr))

                break;

 

            hr = StringCchCopyN(szValue, MAX_PATH,

                pszPos, _tcslen(pszPos) + 1);

 

            if (SUCCEEDED(hr))

                _tprintf(TEXT("[%u] %s=%s\r\n"), current,

                szName, szValue);

            else

            {

                if (hr == STRSAFE_E_INSUFFICIENT_BUFFER)

                {

                    _tprintf(TEXT("[%u] %s=%s\r\n"), current,

                        szName, szValue);

                }

                else

                {

                    _tprintf(TEXT("[%u] %s=???\r\n"), current, szName);

                    break;

                }

 

            }

 

        }

        else

        {

            _tprintf(TEXT("[%u] %s\r\n"), current, pszCurrent);

        }

 

        current++;

 

        while (*pszCurrent != TEXT('\0'))

            pszCurrent++;

        pszCurrent++;

 

        if (*pszCurrent == TEXT('\0'))

            break;

    }

 

    FreeEnvironmentStrings(pEnvBlock);

}

top

posted at

2009/01/19 18:34


POST : 분류없음

DumpModule

extern "C" const IMAGE_DOS_HEADER __ImageBase;

 

void DumpModule()

{

        HMODULE hModule = GetModuleHandle(NULL);

        _tprintf(TEXT("with GetModuleHandle(NULL) = 0x%x\r\n"), hModule);

 

        _tprintf(TEXT("with __ImageBase = 0x%x\r\n"), (HINSTANCE)&__ImageBase);

 

        hModule = NULL;

        GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,

                                        (PCTSTR)DumpModule,

                                        &hModule);

        _tprintf(TEXT("with GetModuleHandleEx = 0x%x\r\n"), hModule);

}

top

posted at

2009/01/19 17:31


CONTENTS

yunchansik
BLOG main image

RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글 최근 트랙백
카테고리 태그 구름사이트 링크