Создание скрытого файла с помощью Flex/AIR в Win

как я могу создать скрытый файл в моей файловой системе Win? Я читал, что вы должны использовать собственный код, и я знаю, что в AS3 есть класс NaviteProcess, но я действительно не знаю, как его использовать, и мне не удается найти много о нем.

Есть ли кто-нибудь, кто знает, как это сделать?

Заранее спасибо!


person Andrea Silvestri    schedule 07.05.2012    source источник


Ответы (1)


Очищено, чтобы лучше отражать, где мы находимся, и будет обновлять его:

Основано на информации с: http://deepanjandas.wordpress.com/2010/09/10/writing-executing-cmd-scripts-through-air/

private var applicationDirectory:File;

private function createCMDFile():void
{
    applicationDirectory = File.desktopDirectory;
    var cmdFile:File = applicationDirectory.resolvePath( 'hide.cmd' );
    var stream:FileStream = new FileStream()
    stream.open( cmdFile, FileMode.WRITE );

    var dataString:String = "ATTRIB +H \\ C:\\Users\\***yourUserName***\\***fileToHide.txt***"; //or any path you want just be sure to use \\ instead of \ and obviously change ***yourUserName*** and ***fileToHide.txt***

            stream.writeMultiByte( dataString, "ANSI" );
    stream.close();

    stream = null;

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    nativeProcessStartupInfo.executable = cmdFile;

    var process:NativeProcess = new NativeProcess();
    process.start(nativeProcessStartupInfo);
    process.addEventListener( NativeProcessExitEvent.EXIT, onExitHandler );
}

private function onExitHandler( event:NativeProcessExitEvent ):void
{
    var cmdFile:File = applicationDirectory.resolvePath( 'hide.cmd' );
    cmdFile.deleteFile();
}
person Dom    schedule 08.05.2012
comment
это очень полезно, хотя у меня есть проблема с файлом .cmd ... если я скопирую и вставлю сгенерированную строку as3 в окно подсказки, все в порядке, но если я запущу файл hide.cmd (как по воздуху, так и по двойному щелчку) ничего не происходит... =\ - person Andrea Silvestri; 09.05.2012
comment
Попробуйте добавить паузу в конец файла hide.cmd и запустить его вручную. Команда паузы заставит командную строку оставаться открытой, позволяя вам прочитать, есть ли какие-либо ошибки. Не очень много DOS человек, но дайте мне знать, если вы видите что-нибудь там, и я постараюсь помочь больше. - person Dom; 09.05.2012
comment
Возвращенная ошибка такова: C:\Users\ANDREA\Desktop>´╗┐attrib +h "C:\Users\ANDREA\Desktop\.prova" "´╗┐attrib" is not recognized as an internal or external command, an executable program or batch file Поскольку я не дома, я создал этот файл cmd, создав новый с помощью блокнота. Кажется, в подсказке читаются странные символы, которые я не набирал °_° - person Andrea Silvestri; 09.05.2012
comment
какой именно командой вы пытаетесь запустить файл .cmd? Я знаю, вы сказали, что это работает путем копирования и вставки в приглашение cmd, поэтому оно ДОЛЖНО работать в пакетном файле. Сообщите мне команду, которую вы пытаетесь использовать (без сумасшедших специальных символов), и я проведу небольшое тестирование. - person Dom; 09.05.2012
comment
Сейчас я на Mac, поэтому проверить не смогу. Вечером посмотрю дома и свяжусь с вами. - person Dom; 09.05.2012
comment
хорошо, нашел проблему. .omgtoolcheck должен быть omgtoolcheck.txt. У вас две проблемы. Во-первых, есть . перед именем файла, когда его не должно быть. Далее, у вас нет расширения файла, который вы пытаетесь скрыть. Если это файл .txt, добавьте .txt. Если .exe, добавьте .exe. Надеюсь, это поможет. - person Dom; 10.05.2012
comment
описание на итальянском, но... та же ошибка =( dl.dropbox.com/u/4064417 /sameError.JPG - person Andrea Silvestri; 10.05.2012
comment
Это странно. Файл cmd отлично работал на моей машине. Команда, которую я использовал, была точно такой же, за исключением того, что я заменил ваше имя пользователя своим именем пользователя и не использовал там сумасшедшие специальные символы. ФАКТИЧЕСКИ!!!! Я видел это раньше. При написании файла с помощью ActionScript я видел, как он помещает сумасшедший текст в начало файла. Я понятия не имею, как я это исправил, хотя. Я отправлю снова, если я могу вспомнить. - person Dom; 10.05.2012
comment
Этот раздел комментариев становится довольно длинным ... По какой-то причине я не могу переместить его в чат ... В любом случае, я собираюсь обновить свой ответ, чтобы дать код того, как я ДУМАЮ, что он должен работать. Дайте мне знать, если это то, как вы делаете вещи. - person Dom; 11.05.2012
comment
ПОНЯТНО! строка, которая пишет поток, должна быть такой: stream.writeMultiByte( dataString, "ANSI" ); Вы должны обновить свой ответ =) - person Andrea Silvestri; 13.05.2012
comment
Здорово!!! Рад, что ты понял это. Обновил эту строку в ответе. Удачи там! - person Dom; 14.05.2012