Я запускаю Windows 7 в VirtualBox на хосте OS X 10.8. Хост имеет общую папку с файлом с именем >>>FILE<<<
внутри. По-видимому, OS X сама по себе не имеет проблем с такими именами файлов. К сожалению, я не могу открыть эти файлы в Windows 7 из-за <
s и >
s в названии. В C, этот вызов не выполняется:Доступ к файлам с недопустимыми именами в Windows
CreateFileW(
L"\\\\VBOXSVR\\ft1\\>>>FILE<<<",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
GetLastError
возвращает ERROR_INVALID_NAME
(123). Если я изменю имя файла на FILE
, я получаю действительный дескриптор, и все в порядке.
Известно ли в Windows доступ к файлам с недопустимыми символами в их именах? Предположим, что продуктивная среда не имеет прямого доступа для записи в файловую систему хоста.
Предоставляет ли удаленная файловая система короткие имена файлов? Если это так, вы можете получить доступ к файлу, используя его краткое имя. –
@JonathanPotter ваша идея хорошая, но нет, файловая система не поддерживает короткие имена файлов, а VirtualBox не делится ими. Это может работать с папкой тома NTFS, совместно используемой в реальной сети с соответствующим драйвером. Краткое имя файла будет выглядеть как '___ FIL ~ 1'. –