Я хочу получить краткий путь с помощью функции GetShortPathName на сетевом диске, F: \, с китайским именем папки. Когда я запускаю EXE-файл из этой папки, я не вижу возможности получить короткий путь. Когда я делаю это с диска C: \, все работает нормально.
Вот мой код:
#include"stdafx.h"
#include<windows.h>
#include<tchar.h>
#include<stdio.h>
#include <iostream>
using namespace std;
#define BUFSIZE 4096
bool GetIsCaseCorrect(const WCHAR* fileName)
{
bool result = false;
// Correct case by converting to short path and back to long
WCHAR shortFileName[_MAX_PATH];
if (GetShortPathName(fileName, shortFileName, _MAX_PATH) != 0)
{
wchar_t correctFileName[_MAX_PATH];
wcout << "ShortFile " << shortFileName;
GetLongPathName(shortFileName, correctFileName, _MAX_PATH);
result = wcscmp(fileName, correctFileName) != 0;
}
return result;
}
int main() {
bool ret;
HMODULE hModule = GetModuleHandleW(NULL);
WCHAR path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);
ret = GetIsCaseCorrect(path);
getchar();
}
Если я запускаю эту программу, короткий путь не отображается на несистемном диске, где папка на китайском языке.
Моя ОС Windows - Windows 7.