java(.exeファイルを指すlnkファイル)で.lnkファイルを実行する必要があります。どのようにできるのか? VB .NETでJavaでファイル.lnkを実行
私は
Process.Start(path)
を行うと、それはあなたが助けを求め
THXに動作します。
java(.exeファイルを指すlnkファイル)で.lnkファイルを実行する必要があります。どのようにできるのか? VB .NETでJavaでファイル.lnkを実行
私は
Process.Start(path)
を行うと、それはあなたが助けを求め
THXに動作します。
はProcessBuilderを使用してください。
大丈夫、それは動作します! しかし、今私はちょうど始めたプロセスのPIDが何であるか知る必要があります。 thx – raf
補足的な質問をする場合は、元の質問を編集することをお勧めします。 – DJClayworth
pidを見つけることが全く違うワームであるので、新しい質問を作成するのが最善でしょう:) – dogbane
JavaはOS固有の機能をサポートしていませんが、java.awt.Desktop.openはこれを行う必要があります。 Windowsでは
、あなたはrundll
を使用することができます。プロセスの出力とエラー出力を読み取ること
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "C:\\temp\\file.lnk");
Process process = pb.start();
コールprocess.getInputStream()
とprocess.getErrorStream()
:
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +
"\Path\to\File.lnk");
また、ProcessBuilderを使用することもできますが、実際のrundll32へのパスが必要です。 小さな「階層型の送信先」アプリで奇妙なバグをソートしようとしていましたが、 (私はそのウィンドウが嫌い、XPの後に "flatten"、 "Send to"オプションのリンクが愚かなリストになっています;ツリーとして、私が使っている40の奇妙な小さなオプションシステム)
ここでは、リンク(または任意のファイルの種類)を呼び出すアクションのコードです:
ArrayList<String> app = new ArrayList<>();
app.add("C:\\Windows\\System32\\rundll32.exe");
app.add("SHELL32.DLL,ShellExec_RunDLL");
app.add(file.getAbsolutePath());
// Args are passed by windows when it launches the "More Sends" jar
for (int i = 0; args != null && i < args.length; i++) {
app.add(args[i]);
}
ProcessBuilder b = new ProcessBuilder(app);
// The logger thread hangs till the called process does not die... not ideal
// log(
b.start()
//)
;
ただし、Java経由の.lnkウィンドウを呼び出すの全体shenhaniganはかなり混乱した結果を与えることができます。
x.jarに直接リンクすると、システムJava VMでjarを開くことができますが、インストールされたjre/bin/javaw.exe -jar "x.jar"への直接リンクが失敗し、 「ファイルを見つける」というメッセージが表示されます。
これはまったく同じ方法で呼ばれる別のジャーが間違いなく実行されます。いくつかは、私の古いPCからコピーされているよう
けれども、私は...、の.lnkの代替ストリームを見て
'.lnk' => WindowsのOSを持っているのでしょうか? –