2015-03-12 7 views
14

Podałem następujące granty na uprawnienia i wywołanie CMD.EXE wydaje się działać tak, jak pokazano w poniższym przykładzie kodu.Jak wywołać .exe z PL/SQL?

Jednak nie mogę uzyskać żadnego wyniku z whoami.exe. Domyślny katalog to C:\app\oramgr\product\12.1.0\dbhome_1\database\, który pojawia się w pliku JJJ.TXT. Jednak plik JJJ_WHOAMI.TXT nie zawiera niczego.

Wszelkie sugestie?

dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\WINDOWS\SYSTEM32\CMD.EXE', 'execute'); 
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Windows\System32\whoami.exe', 'execute'); 
dbms_java.grant_permission('PWATSON', 'SYS:java.lang.RuntimePermission', '*', 'writeFileDescriptor'); 
dbms_java.grant_permission('PWATSON', 'SYS:java.lang.RuntimePermission', '*', 'readFileDescriptor'); 

dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Users\pwatson', 'read, write'); 
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Users\pwatson\*', 'read, write'); 
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\temp', 'read'); 

SQL> select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c CD C:\Users\pwatson\src\java ^& ECHO ^%CD^% ^& EXIT 4') as y from dual; 
     Y 
---------- 
     4 

C:\app\oramgr\product\12.1.0\dbhome_1\DATABASE 
SQL> select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c ECHO ^%CD^% >jjj.txt ^& EXIT 7') as y from dual; 
     Y 
---------- 
     7 

SQL> select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c C:\Windows\System32\whoami.exe >jjj_whoami.txt') as y from dual; 
     Y 
---------- 
     0 


C:\app\oramgr\product\12.1.0\dbhome_1\database>type JJJ.TXT 
C:\app\oramgr\product\12.1.0\dbhome_1\DATABASE 

C:\app\oramgr\product\12.1.0\dbhome_1\database>type JJJ_WHOAMI.TXT 
+0

Co okna użytkownik korzysta z usługi serwera bazy danych? Aby wykonać test spróbuj uruchomić usługę w innym oknie i spróbuj ponownie uruchomić zdanie. – Turrican

+0

Kiedy zobaczyłem to wcześniej w WPB, był to użytkownik "wyroczni". Na instalacji niepochodzącej z PDB jest to "oramgr". Co masz na myśli przez "inny system Windows"? – lit

+0

Jakiej wersji systemu Windows używasz? –

Odpowiedz

2

Może Oracle jest nikt, gdy pracuje on whoami na Windows? Dobrym pomysłem jest zmiana użytkownika, który uruchamia usługę.


Trzecie połączenie różni się nieco od drugiego. Nie prosiłeś o wyjście.

Spróbuj poniżej:

select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c C:\Windows\System32\whoami.exe >jjj_whoami.txt ^& EXIT 8') as y from dual;