Да вроде нет =) Используй localConnection

Код AS3:
package ugo.net.connections.unique
{
import flash.errors.IllegalOperationError;
import flash.events.AsyncErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.LocalConnection;
import ugo.events.RemovableEventDispatcher;
/**
* Такая флешка уже запущена
*/
[Event(name="flashAlreadyStarted", type="ugo.net.connections.unique.UniqueFlashControllerEvent")]
/**
* Запущен еще один экземпляр флешки.
*/
[Event(name="secondFlashStarted", type="ugo.net.connections.unique.UniqueFlashControllerEvent")]
/**
* Контроллер уникальности запущенных флешек.
*
* Использование:
*
* UniqueFlashController.addEventListener(UniqueFlashControllerEvent.FLASH_ALREADY_STARTED, function (e:Event):void { trace("Эта флешка запущена вторично"); } );
* UniqueFlashController.addEventListener(UniqueFlashControllerEvent.SECOND_FLASH_STARTED , function (e:Event):void { trace("Запущена вторая флешка"); } );
* UniqueFlashController.init("myConnectionName");
*
* @author strax
*/
public class UniqueFlashController
{
private static var _instance:UniqueFlashController = null;
private static const _dispatcher:RemovableEventDispatcher= new RemovableEventDispatcher;
private var _connectionName:String;
private const _connection:LocalConnection = new LocalConnection;
/**
* Проинициализировать контроллер уникальности флешки.
*
* @param connectionName имя соединения
*/
public static function init( connectionName:String ):void
{
if( UniqueFlashController._instance )
throw new IllegalOperationError("Контроллер уникальности флешки уже проинициализирован.");
if(!connectionName )
throw new ArgumentError( "Необходимо задать имя соединения." );
UniqueFlashController._instance = new UniqueFlashController( new UniqueFlashControllerEnforcer(), connectionName );
}
/**
* Для получения экземпляра используется статическое свойство instance!
*/
public function UniqueFlashController(enforcer:UniqueFlashControllerEnforcer, connectionName:String)
{
super();
if(!enforcer) throw new ArgumentError("Для создания экземпляра необходим приватный ключ!");
_connectionName = connectionName;
_connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecutiryError);
_connection.allowDomain("*");
try
{
_connection.connect( connectionName );
}
// если в результате попытки соединиться была получена ошибка, значит такое соединение уже существует.
// значит, эта флешка является уже не первой запущенной
catch( error:Error )
{
_dispatcher.dispatchEvent( new UniqueFlashControllerEvent( UniqueFlashControllerEvent.FLASH_ALREADY_STARTED ));
// вызвать в первой запущенной флешке AsyncError
_connection.send( connectionName, connectionName );
}
}
private function onSecutiryError(event:SecurityErrorEvent):void
{
return;
}
/**
* Обработать AsyncError.
*
* Эта ошибка возникает при попытке вызвать несуществующий метод через LocalConnection.
* Соответственно, если кто-то пытается вызвать этот метод, значит запущена вторая флешка.
*/
private function onAsyncError(event:AsyncErrorEvent):void
{
_dispatcher.dispatchEvent( new UniqueFlashControllerEvent( UniqueFlashControllerEvent.SECOND_FLASH_STARTED ));
}
/**
* Имя соединения, которое используется для проверки единичного запуска флешки
*/
public static function get connectionName():String
{
if( _instance )
return _instance._connectionName;
else
return null;
}
/**
* @inheritDoc
*/
public static function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
{
_dispatcher.addEventListener( type, listener, useCapture, priority, useWeakReference );
}
/**
* @inheritDoc
*/
public static function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
{
_dispatcher.removeEventListener(type, listener, useCapture);
}
/**
* Удалить всех слушателей
*/
public static function removeAllListeners():void
{
_dispatcher.removeAllListeners();
}
}
}
class UniqueFlashControllerEnforcer {}

Код AS3:
package ugo.net.connections.unique
{
import flash.events.ErrorEvent;
/**
* Событие контроллера уникальных флешек.
*
* @author strax
*/
public class UniqueFlashControllerEvent extends ErrorEvent
{
/**
* Такая Флешка уже запущена.
*
* Это сообщение получает флешка, которая пытается запуститься вторично.
*/
public static const FLASH_ALREADY_STARTED:String = "flashAlreadyStarted";
/**
* Запущена вторая флешка.
*
* Это событие получает первая запушенная флешка при запуске второй.
*/
public static const SECOND_FLASH_STARTED:String = "secondFlashStarted";
public function UniqueFlashControllerEvent(type:String)
{
super(type, false, false, (type == FLASH_ALREADY_STARTED?"SWF уже запущена":"Запущен еще один экземпляр SWF"));
}
}
}
Автор шедевра - товарищ по работе. Не уверен, что он помнит свой пароль от flasher.ru, поэтому запостил сам. Кстати, претензии тоже к нему =)