[英]Run 64 bit windows command from 32 bit java
我正在使用Java SWT應用程序,該應用程序需要顯示安裝在本地Windows計算機(64位)中的ODBC驅動程序。 我想出了一個reg查詢語句,它將做到這一點。
reg query "HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" /f *
當我在命令提示符下運行此命令時,我得到了預期的輸出。 但是,當我從32位Java運行相同的命令時,reg查詢失敗。 這是示例代碼。
String cmd = "reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\" /f *";
System.out.println(cmd);
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
line = null;
BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = err.readLine()) != null) {
System.out.println(line);
}
輸出量
ERROR: The system was unable to find the specified registry key or value.
一經閱讀,我發現Windows具有注冊表重定向功能,這阻止了我的32位Java使用64位注冊表和64位reg.exe。
我試圖在system32文件夾中對64位reg.exe的路徑進行硬編碼,但仍然失敗。
String cmd = "C:\\Windows\\System32\\reg.exe query \"HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\" /f *";
無論如何要解決此問題。
提前致謝。
謝謝你們的幫助。 我找到了解決方案。 我必須使用sysnative文件夾才能從32位應用程序訪問64位工具。
所以我更新了我的要求查詢語句
String cmd = "C:\\Windows\\Sysnative\\reg.exe query \"HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\" /f *";
輸出
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources
jbb REG_SZ IBM Integration (9.0.0.1) - DataDirect Technologies 7.0 64-BIT Oracle Wire Protocol
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.