2016-05-30 22 views
1

Ich möchte TestComplete von Java öffnen, aber ich kann das nicht tun, weil Privileg fehlt. Wenn ich meinen Code ausführenSo öffnen Sie TestComplete von Java-Code

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(); 
    } 
} 

das Programm beendet mit Create error = 740, und mir sagt, dass ich höheres Privileg für diese Aktion muß. Ich weiß, dass ich eine .lnk mit admin priv. bei offenen Eigenschaften der exe, aber es könnte ein richtiger Weg sein, dies zu tun.

+0

Siehe auch [Wenn Runtime.exec() nicht funktioniert] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) für viele gute Tipps zum korrekten Erstellen und Bearbeiten eines Prozesses. Dann ignoriere es auf 'exec' und verwende einen' ProcessBuilder' um den Prozess zu erstellen. –

Antwort

1

Sie müssen die Tools | deaktivieren Optionen ... | Motoren | Allgemein | Aktivieren Sie die Unterstützung für das Testen von Windows Store-Anwendungen Option in TestComplete.

Informationen dazu, wie dies das Arbeiten mit TestComplete aus einer externen Anwendung wie in Ihrem Fall beeinflussen kann, finden Sie im Hilfethema Requirements for Testing Windows Store Applications.

2

Ich denke, dass Sie Dateiklasse zum Festlegen von Berechtigungen verwenden können.

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

In Linux wird es funktionieren.

Wenn Sie Windows verwenden, können Sie den Befehl "icacls" ausführen, um der Datei eine Berechtigung zu erteilen.

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

Dieser Befehl kann verwendet werden, um in Windows Berechtigungen zu erteilen.

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. 

Sie können über Kommando Runtime.getRuntime() ausführen exec ("icacls hier etwas.");

I hope I helped you.

+0

Ich habe versucht mit Runtime.getRuntime(). Exec ("icacls F "), und ("icacls/grant user.name:(OI)(CI)F "), aber es nur nichts für mich tun. Keine Fehlermeldung, aber die TestComplete ist immer noch nicht geöffnet. – Gregito

+0

Sind Sie sicher, dass der Befehl keine Fehlermeldung ausgibt? Versuchen Sie, errorStream von dem Befehl zu erhalten, den Sie ausgeführt haben, oder versuchen Sie, den Befehl von der Befehlszeile (CMD) auszuführen, und führen Sie dann Ihren Code aus, es könnte funktionieren. –