空 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); } 他 { // 障害シナリオの下で、現在の作業ディレクトリを取得するため のIF(0 == 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!] = ' \\ ' ){ フォルダ + = ' \\ ' ; } }