2016-05-30 2 views
1

Я хотел бы открыть TestComplete из java, но я не могу этого сделать, потому что отсутствие привилегий. Когда я запускаю мой кодКак открыть TestComplete из java-кода

public static void StartTC() { 
    try{ 
     Process p = Runtime.getRuntime().exec(new String[] {"C:\\Program Files (x86)\\SmartBear\\TestComplete 11\\Bin\\TestComplete.exe"}); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

программа завершается с ошибкой CreateProcess = 740, и говорит мне, что мне нужно более высокая привилегия для этого действия. Я знаю, что могу сделать .lnk с админом администратора. при открытых свойствах exe, но может быть правильный способ сделать это.

+0

См. Также [Когда Runtime.exec() не будет] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) для много хороших советов по правильному созданию и обработке процесса. Затем проигнорируйте это, ссылаясь на 'exec' и используйте' ProcessBuilder' для создания процесса. –

ответ

1

Вам необходимо отключить Инструменты | Опции ... | Двигатели | Общий | Включите поддержку тестирования приложений Windows Store в TestComplete.

Информация о том, как это может повлиять на работу с TestComplete из внешнего приложения, например, в вашем случае, можно найти в разделе справки Requirements for Testing Windows Store Applications.

2

Я думаю, вы можете использовать класс File для установки разрешений.

File file = new File("File.c"); 
//but file permission are OS specific. 
file.setExecutable(true); 

В Linux это будет работать.

Если вы используете окна, вы можете запустить команду «icacls», чтобы дать разрешение на файл.

C:\>icacls "D:\test" /grant John:(OI)(CI)F /T 

Эта команда может использоваться для разрешения в Windows.

According do MS documentation: 

F = Full Control 
CI = Container Inherit - This flag indicates that subordinate containers will inherit this ACE. 
OI = Object Inherit - This flag indicates that subordinate files will inherit the ACE. 
/T = Apply recursively to existing files and sub-folders. (OI and CI only apply to new files and sub-folders). Credit: comment by @AlexSpence. 

Вы можете запустить выше команду, используя Runtime.getRuntime() Exec ("Icacls что-то здесь").

I hope I helped you.

+0

Я пробовал с Runtime.getRuntime(). Exec ("icacls F ") и ("icacls/grant user.name:(OI)(CI)F "), но он просто ничего не делает для меня. Нет сообщения об ошибке, но TestComplete все еще не открыт. – Gregito

+0

Вы уверены, что команда не выдала сообщение об ошибке? Попробуйте получить errorStream из команды, которую вы выполнили, или попробуйте запустить команду из командной строки (CMD), а затем запустите свой код, это может сработать. –