標準的な方法では、作業ディレクトリを取得

 GetWorkingFolder(STD :: 文字列フォルダ){ 
    folder.resize(MAX_PATH * 2 + 1。 ' \ 0 '); // 少し長く滞在し、その後、Cloudwalk防止エラー接続が続い

    //は現在のプログラムのディレクトリを取得し、もしCディスク、取得されたAPPDATAディレクトリ、ディレクトリサフィックスは、端部に付加さ 
    HANDLEのhExeHandle = のGetModuleHandle(NULL);
     IF(hExeHandle =!nullptr A){ 
        GetModuleFileNameA((HMODULE)hExeHandle、 フォルダ[ 0 ]、MAX_PATH); 
        フォルダ = folder.substr (0、folder.find_last_of(" \\ ")+ 。1); 
    }  { // 障害シナリオの下で、現在の作業ディレクトリを取得するため
        のIF0 == GetCurrentDirectoryA(MAX_PATH、&フォルダの[ 0 ])){
             // 再び失敗、それだけで、デフォルトの\ディレクトリアップします。 
            フォルダ= " " ; 
        } 
    } //は、最初の文字はC、ウィンドウが他のディスクにインストールするかどうかを判断するのではなく、ダイ行く書き込みであるか否かを判断する場合は((フォルダが[ 0 ] == C )||(フォルダ[ 0 ] == ' C ' )){ 
        STD :: 文字列 strTemp(MAX_PATHの+ 。1'

    
    \ 0を' );
         IF(== S_OK SHGetFolderPathA(NULL、CSIDL_APPDATA | CSIDL_FLAG_CREATE、NULL、SHGFP_TYPE_DEFAULT、&strTemp [ 0 ])){ 
            フォルダ = strTemp; 
        } 
    } 

    // 最後の文字か否かを判断する
    IF(フォルダ[folder.length () - 1!] = ' \\ ' ){ 
        フォルダ + = ' \\ ' ; 
    } 
}

 

おすすめ

転載: www.cnblogs.com/eaglexmw/p/11314821.html