본문 바로가기

Flex/AIR

NativeProcess와 UAC

AIR 어플리케이션에서 다른 어플리케이션을 가동하기 위해서는
AIR 2.0 이상에서 NativeProcess를 사용 할 수 있습니다.

var startupInfo: NativeProcessStartupInfo;									
var process: NativeProcess = new NativeProcess();				
var processArgs: Vector. = new Vector.<String>();					 
var ParamStr:String = "TEST";
processArgs[ 0 ] = "Param=" + ParamStr;
processArgs[ 1 ] = "A=B";
processArgs[ 2 ] = "C=D";
					
startupInfo = new NativeProcessStartupInfo;
startupInfo.workingDirectory = dir;				
startupInfo.arguments = processArgs;
startupInfo.executable = exeFile;
					
process.start(startupInfo);	

위의 코드는 평범한 NativeProcess를 이용한 exe 실행 예제입니다.
일반적인 exe 파일은 실행에 문제가 없으며 파라미터 전달도 잘 됩니다.

여기에 제약사항이 하나 있는데요
여러분 혹시 아래 아이콘을 보신적 있으신지요?


네 Windows VIsta와 Windows 7에서 UAC의 제약을 받는 권한 요청(상승) 필요한 바이너리입니다.
저 파일들은 NativeProcess.start로는 AIR에서 기동 시길 수 없습니다.
그럼 어떻게 해야 할까요?
flash.filesystem.File.openWithDefaultApplication() 함수를 이용하면 가능합니다.

사용법은 훨씬 더 간단하죠
exeFile.openWithDefaultApplication();
아주 간단히 사용이 가능합니다.
다만, 이경우에는 단점이 하나 있는데요...
파라미터를 전달 할 수 없다는 것입니다 =ㅅ=;; 
산넘어 산이죠?
이런 경우 어쩔 수 없이 파일이나 다른 수단을 통해서 전달해야 합니다.


<참고 URLs>