如何从PL / SQL调用.exe?

时间:2015-03-12 15:50:32

标签: windows oracle plsql cmd

我已授予以下授权以获得许可,并且调用CMD.EXE似乎工作如下面的代码示例所示。

但是,我无法从whoami.exe获得任何输出。我可以看到C:\app\oramgr\product\12.1.0\dbhome_1\database\文件中显示的默认目录是JJJ.TXT。但是,JJJ_WHOAMI.TXT文件不包含任何内容。

有什么建议吗?

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

1 个答案:

答案 0 :(得分:1)

在Windows上运行whoami时,Oracle可能是无人机吗?好主意是更改启动服务的用户。

第三个电话与第二个电话略有不同。你没有要求退出。

尝试以下方法:

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