欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java喚醒本地應(yīng)用的兩種方法詳解

 更新時(shí)間:2022年08月09日 10:31:00   作者:一灰灰  
這篇文章主要為大家介紹了Java喚醒本地應(yīng)用的兩種方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

作為一個(gè)后端同學(xué),經(jīng)常被安全的小伙伴盯上,找一找安全漏洞;除了常說的注入之外,還有比較嚇人的執(zhí)行遠(yuǎn)程命令,喚醒本地應(yīng)用程序等;然后有意思的問題就來了,寫了這么多年的代碼,好像還真沒有嘗試過用java來喚醒本地應(yīng)用程序的

比如說一個(gè)最簡(jiǎn)單的,打開本地的計(jì)算器,應(yīng)該怎么搞?

接下來本文將介紹一下如何使用java打開本地應(yīng)用,以及打開mac系統(tǒng)中特殊一點(diǎn)的處理方式(直白來說就是不同操作系統(tǒng),使用姿勢(shì)不一樣)

1. Runtime使用方式

主要是基于Runtime.getRuntime().exec()來執(zhí)行shell命令,來打開應(yīng)用

比如打開計(jì)算器

// win系統(tǒng)
Runtime.getRuntime().exec("exec");
// mac系統(tǒng)
Runtime.getRuntime().exec("open -n /Applications/Calculator.app")

從上面的傳參也可以看出兩者的區(qū)別,為什么mac會(huì)整一個(gè) open -n, 這個(gè)其實(shí)可以理解為在終端執(zhí)行命令,打開計(jì)算器

注意事項(xiàng)

對(duì)于mac系統(tǒng)而言,除了上面這種打開方式之外,還有下面這種姿勢(shì)

Runtime.getRuntime().exec("/Applications/Calculator.app/Contents/MacOS/Calculator")

在exec中指定計(jì)算器的路徑,有個(gè)很容易采的坑,直接寫成下面這種

Runtime.getRuntime().exec("/Applications/Calculator.app")

上面這個(gè)直接執(zhí)行之后會(huì)提示權(quán)限錯(cuò)誤,其主要原因是mac系統(tǒng)的應(yīng)用和win中的exe作為啟動(dòng)方式不太一樣,對(duì)于mac而言,可以理解xxx.app為一個(gè)目錄,真正執(zhí)行文件是內(nèi)部的xxx/Contents/MacOS/xxx

2. ProcessBuilder使用方式

除了Runtime喚起之外,使用ProcessBuilder也屬于非常常見的case

// win
new ProcessBuilder("exec").start()
// mac 注意,使用下面這個(gè),則傳參不能是 open -n xxx
new ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start()

使用上面這種姿勢(shì),特別需要注意的是內(nèi)部傳參不能是open -n

3. 小結(jié)

從上面介紹的方式來看,其實(shí)打開應(yīng)用程序的思路主要就是利用java來執(zhí)行腳本命令;內(nèi)容比較簡(jiǎn)單,隱患卻是比較大的;在自己的項(xiàng)目中,最好不要出現(xiàn)這種調(diào)用方式

以上就是Java喚醒本地應(yīng)用的兩種方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java喚醒本地應(yīng)用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

    java阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Java?多個(gè)時(shí)間區(qū)間進(jìn)行合并處理方法

    Java?多個(gè)時(shí)間區(qū)間進(jìn)行合并處理方法

    用戶在選擇多個(gè)時(shí)間區(qū)間之后,如選擇的時(shí)間區(qū)間連續(xù)或者有重疊,需要對(duì)所選的時(shí)間區(qū)間進(jìn)行合并,這其實(shí)是一個(gè)區(qū)間合并問題,下面通過本文給大家介紹Java?多個(gè)時(shí)間區(qū)間進(jìn)行合并處理的解決方案,一起看看吧
    2024-02-02
  • Java工具類之@RequestMapping注解

    Java工具類之@RequestMapping注解

    今天帶大家來學(xué)習(xí)Java工具類,文中對(duì)注解@RequestMapping作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java Random.nextInt()方法的具體使用

    java Random.nextInt()方法的具體使用

    這篇文章主要介紹了java Random.nextInt()方法的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Java如何優(yōu)雅的調(diào)用dubbo同時(shí)不使用其它jar包

    詳解Java如何優(yōu)雅的調(diào)用dubbo同時(shí)不使用其它jar包

    這篇文章主要介紹了如何在不使用他人jar包的情況下優(yōu)雅的進(jìn)行dubbo調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • java-for循環(huán)問題

    java-for循環(huán)問題

    這篇文章主要介紹了java-for循環(huán)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringAOP核心對(duì)象的創(chuàng)建圖解

    SpringAOP核心對(duì)象的創(chuàng)建圖解

    這篇文章主要介紹了SpringAOP核心對(duì)象的創(chuàng)建詳解,通過使用AOP,我們可以將橫切關(guān)注點(diǎn)(如日志記錄、性能監(jiān)控、事務(wù)管理等)從業(yè)務(wù)邏輯中分離出來,使得代碼更加模塊化、可維護(hù)性更高,需要的朋友可以參考下
    2023-10-10
  • Windows下如何安裝配置Redis環(huán)境

    Windows下如何安裝配置Redis環(huán)境

    這篇文章主要介紹了Windows下如何安裝配置Redis環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java從零實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)

    Java從零實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • 基于SpringBoot實(shí)現(xiàn)自定義插件的流程詳解

    基于SpringBoot實(shí)現(xiàn)自定義插件的流程詳解

    在SpringBoot中,插件是一種擴(kuò)展機(jī)制,它可以幫助我們?cè)趹?yīng)用程序中快速地添加一些額外的功能,在本文中,我們將介紹如何使用 SpringBoot實(shí)現(xiàn)自定義插件,需要的朋友可以參考下
    2023-06-06

最新評(píng)論