Adobe Air URL запрашивает у локальных файловых систем Windows 7, а не 10 - PullRequest
0 голосов
/ 12 ноября 2018

Я разработал приложение Adobe Air для небольшой внутренней сети. Все компьютеры работали под управлением Windows 7, но теперь начинают заменяться системами Windows 10. Я могу получить доступ к подключенному диску «I» и локальному диску «C» с помощью класса файлов на компьютерах с Windows 7, но только с подключенным диском «I» в Windows 10.

Редактировать: Capabilities.localFileReadDisable возвращает false как в системах Windows 7, так и в системах Windows 10.

**** Я мог бы обойти необходимость в локальном файле, если бы Air мог получить какую-либо конкретную информацию о машине, на которой он работает, серийный номер, mac-адрес, имя компьютера и т. Д. На самом деле не имеет значения, какую информацию я получить, это просто должно быть уникальным для этого компьютера. И использование куки не вариант, потому что они нестабильны ****

Следующий код выполняет две вещи.

Во-первых, он отображает текущую версию файла Air и ищет файл на подключенном диске с последней доступной версией. Если они совпадают, на компьютере установлена ​​последняя версия. Если они не совпадают, новая версия отображается для пользователя, указывая, что приложение должно быть обновлено.

Во-вторых, он получает имя конкретного компьютера из текстового файла, находящегося на локальном диске. Это имя используется в отчетах, чтобы указать, какой компьютер использовался. Вероятно, есть гораздо лучший способ сделать это, но в Windows 7 он отлично работает для меня. К сожалению, Windows 10 выдает ошибку при попытке доступа к файлу на локальном диске.

Ошибка № 2044: необработанная ошибка ioError :. текст = Ошибка № 2032: Ошибка потока. URL: файл: /// C: /machineName.txt

Любая помощь будет принята с благодарностью.

var appXML:XML =  NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXML.namespace();
version_txt.text = "V"+appXML.ns::versionNumber;

// Define path to the version number
var updatePath:URLRequest = new URLRequest("file:///I:/air/update.txt");

// Define path to name of specific pc
var machineName:URLRequest = new URLRequest("file:///C:/machineName.txt");

// Define the URLLoaders
var updateLoader:URLLoader = new URLLoader();
function checkUpdate():void{
    updateLoader.load(updatePath);
}

var nameLoader:URLLoader = new URLLoader();

function checkName():void{
    nameLoader.load(machineName);
}

// Listen for when the file has finished loading.
updateLoader.addEventListener(Event.COMPLETE, loaderComplete);
function loaderComplete(e:Event):void
{
    // The output of the text file is available via the data property
    // of URLLoader.
    if(Number(appXML.ns::versionNumber)<Number(updateLoader.data)){
        update_txt.text = "UPDATE TO V"+updateLoader.data;
    }
}

nameLoader.addEventListener(Event.COMPLETE, nameComplete);
var name_txt:String = new String;

function nameComplete(e:Event):void{
    name_txt = nameLoader.data;
    var holder:String = version_txt.text;
    version_txt.text = name_txt+" ** "+holder;
}
...