특수 폴더의 위치가 마이그레이션 DLL 구하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 241733 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

업그레이드하는 동안 Windows 95 또는 Windows 98에서 Windows 2000 Professional, 시작 메뉴 폴더 같은 특수 폴더를 액세스 또는 데스크톱 폴더 마이그레이션 DLL 할 수 있습니다. 마이그레이션 DLL은 이러한 기본 위치에 폴더가 있는 가정할 수 없습니다. 대신, SHGetSpecialFolderPath 또는 SHGetFolderPath 사용해야 합니다.

추가 정보

Internet Explorer 4.0 바탕 화면 업데이트로 설치한 경우에만 SHGetSpecialFolderPath Windows 95에서 작동합니다. Windows 2000에서 SHGetSpecialFolderPath 항상 사용할 수 있습니다. 그러나 두 경우 모두 SHGetSpecialFolderPath의 Superset임 새 SHGetFolderPath API를 사용하는 것이 가장 좋습니다. Windows 95 또는 Windows 98 SHGetFolderPath 사용하려면 마이그레이션 DLL은 함께 SHFolder.dll 파일을 재배포해야 합니다.

SHFolder.dll 최신 Platform SDK에서 얻을 수 있습니다. Platform SDK를 다운로드하려면 다음 웹 사이트를 참조하십시오.
http://www.microsoft.com/msdownload/platformsdk/setuplauncher.htm
Platform SDK를 설치할 때 재배포 가능 구성 요소 및 빌드 환경에 설치할 수 있는지 확인하십시오. 또한 Microsoft Visual 묻는 메시지가 나타나면 C++를 사용하여 플랫폼 SDK 통합하려면 선택하십시오. 필요한 SHFolder.h 파일을 때문에 필요합니다. Platform SDK 설치되면 설치 폴더에 대한 재배포 가능 실행 SHFolder.exe 검색하십시오. 이 파일 SHFolder.dll 및 Windows 95 또는 Windows 98 실행하기 위해 필요한 업데이트를 모두 설치합니다. 사용자가 컴퓨터에서 마이그레이션 DLL을 넣습니다 때 이 실행 파일은 사용자의 컴퓨터에서 실행해야 합니다. 이는 또한 응용 프로그램 설치 중에 설치할 수 있습니다.

SHGetFolderPath API에 대한 포인터를 가져오는 방법을 보여 주는 코드입니다:
#include <windows.h>
#include <shfolder.h>

PFNSHGETFOLDERPATHA GetFuncPtr_SHGetFolderPathA()
{
   static HMODULE hMod = NULL;
   PFNSHGETFOLDERPATHA pSHGetFolderPath = NULL;

   // Load SHFolder.dll only once
   if (!hMod)
      hMod = LoadLibrary("SHFolder.dll");

   if (hMod)
      // Obtain a pointer to the SHGetFolderPathA function
      pSHGetFolderPath = (PFNSHGETFOLDERPATHA)GetProcAddress(hMod, 
         "SHGetFolderPathA");

   return pSHGetFolderPath;
}
				

다음 코드 예제는 하나의 가능한 이 함수를 사용하는 방법을 보여 줍니다. Windows 2000으로 업그레이드하는 동안 Windows 2000 특정 프로그램 또는 응용 프로그램의 시작 메뉴 프로그램 폴더의 바로 가기가 필요한 유틸리티 응용 프로그램을 포함할 수 있습니다. 새 프로그램이 컴퓨터에 복사한 후 마이그레이션 DLL은 사용자의 시작 메뉴에 바로 가기를 추가할 수 있습니다. 사용자별 설정을 MigrateUserNT 함수를 이 작업을 수행하는 가장 좋은 자리입니다.

다음 함수는 세 개의 매개 변수를 사용합니다. 첫 번째 매개 변수는 실행 대상 경로입니다. 두 번째 매개 변수에 대한 설명입니다. 마지막 매개 변수는 시작 메뉴 프로그램 폴더에서 만든 하위 폴더입니다. 이 바로 가기를 만들 수 있습니다.
#include <windows.h>
#include <objbase.h>
#include <shlobj.h>
#include <shfolder.h>

HRESULT CreateUserStartMenuShortcut(LPSTR pszShortcutFile,
            LPSTR pszDescription, LPTSTR pszRelativeFolder)
{
   HRESULT hr;
   PFNSHGETFOLDERPATHA pSHGetFolderPath = NULL;
   TCHAR pszLink[MAX_PATH];
   BOOL bFound = FALSE;

   pSHGetFolderPath = GetFuncPtr_SHGetFolderPathA();

   // Find the current user's Start Menu Programs folder
   if (pSHGetFolderPath)
      bFound = SUCCEEDED(pSHGetFolderPath(NULL, CSIDL_PROGRAMS, 
                           NULL, SHGFP_TYPE_CURRENT, pszLink));

   if (bFound)
   {
      // Proceed to create the shortcut
      IShellLink *pIShellLink = NULL;
      IPersistFile *ppf = NULL;
      WCHAR pLinkUnicode[MAX_PATH];

      CoInitialize(NULL);

      // Get a pointer to the IShellLink interface.
      hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                            IID_IShellLink, (void **)&pIShellLink);

      if (SUCCEEDED(hr))
      {
         // Get a pointer to IPersistFile interface for saving shortcut
         hr = pIShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf);

         if (SUCCEEDED(hr))
         {   
            hr = pIShellLink->SetPath(pszShortcutFile);
            hr = pIShellLink->SetDescription(pszDescription);

            if (SUCCEEDED(hr))
            {
               // Add the target folder to the Start Menu Programs path
               lstrcat(pszLink, "\\");
               lstrcat(pszLink, pszRelativeFolder);
               lstrcat(pszLink, "\\");

               // Create the directory if it does not exist
               CreateDirectory(pszLink,NULL);

               // Add the file name for the shortcut
               lstrcat(pszLink, pszDescription);
               lstrcat(pszLink, ".lnk");

               // Convert string to Unicode, and call IPersistFile::Save()
               MultiByteToWideChar(CP_ACP, 0, pszLink, -1, pLinkUnicode, MAX_PATH);
               hr = ppf->Save(pLinkUnicode, TRUE);
            }
            ppf->Release();
         }
         pIShellLink->Release();
      }
      CoUninitialize();
   }

   return hr;
}
				
SHGetSpecialFolderPath 및 SHGetFolderPath 이러한 기능을 얻을 수 있는 특수 폴더 다른 유형의 확인하려면 설명서를 참조하십시오. CoInitialize 및 CoUnitialize이 이 함수를 호출한 예제에서는 유의하십시오. 이러한 호출은 COM 다른 함수를 사용하는 경우 마이그레이션 DLL DllMain 함수는 옮겨야 합니다. CoInitialize DLL_PROCESS_DETACH 알림에 대해 DLL_PROCESS_ATTACH 알림 및 CoUninitialize 호출.

참조

마이그레이션 DLL에 대한 자세한 내용은 MSDN Library에서 다음 항목을 참조하십시오.
플랫폼 SDK 관리 서비스; 설치; 마이그레이션 확장 인터페이스

속성

기술 자료: 241733 - 마지막 검토: 2007년 3월 1일 목요일 - 수정: 3.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 98 Standard Edition
  • Microsoft Windows 95
키워드:?
kbmt kbfaq kbhowto kbmigrate kbsetup KB241733 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com