Сбой GetShortPathName с китайской папкой на сетевом диске - PullRequest
0 голосов
/ 03 ноября 2018

Я хочу получить краткий путь с помощью функции 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.

1 Ответ

0 голосов
/ 05 ноября 2018

Насколько я знаю, машина с Windows 7 по умолчанию использует SMB 2.0. Метод GetShortPathNameW лучше поддерживается в SMB 3.0.

Вы можете следовать этому документу ниже, чтобы включить SMB 3.0 с Win7.

https://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and?wa=wsignin1.0%3Fwa%3Dwsignin1.0

Или вы можете следовать этому документу ниже, чтобы проверить состояние тома для Disable8dot3.

https://blogs.msdn.microsoft.com/winsdk/2013/10/09/getshortpathname-doesnt-return-short-path-name/

С наилучшими пожеланиями,

Барон Би

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...