它是不是真正的Windows安全工作方式。如果你真的想這樣做,你將不得不使用Java Native Interface或Java Native Access,並設法調用Mpr.dll
中的WNetAddConnection函數(並且不要忘記在完成時調用WNetCancelConnection
)。
但是你將不得不在你的程序中存儲一個密碼,這是一個糟糕的安全實踐。
要做到這一點的標準方法是啓動一個服務,該服務可以在有權訪問所需目錄的用戶下運行,並讓您的程序使用任何您想要的與其進行通信,最簡單的方法可能是TCP/IP。但除非你有特別的要求,我不會推薦使用Jave來處理這些類型的程序。
更多的Java替代方法是在有權訪問該目錄的用戶下運行的服務器計算機上啓動Tomcat服務。這樣你只需開發一個標準的Java Web應用程序就可以上傳文件,將文件保存到正確的目錄。但它將是一個傳統的和可移植的Java應用程序,不需要JNI和JNA。
如果不能使用Tomcat和不願意進行投資,以多就可以了,你可以在塊拆分方案:
- 一個客戶端程序上的目錄拷貝文件(服務器上)與文件創建權利爲每個人 - 可以衰減到
copy
實用程序,如果沒有更多必須完成或可以輕鬆地用Java編寫
- 一個服務器程序,將在目標目錄上具有完全寫入權限的用戶下的服務器計算機上運行。這其中,也可以很容易地用Java編寫的
- 您可以輕鬆地爲
srvany
服務器計算機上的服務與sc
並根據this answer上ServerFault安裝服務器程序
如果你使用一個客戶端程序,你可以輕鬆地爲每個複製的文件添加一個數字簽名文件,但正如我上面所說的那樣,這是一種很差的安全實踐,並且增加了很少的安全性。至少該程序應該是可執行的並且不可讀,並且源應該被隱藏。最好記錄複製文件的用戶,並詢問他們發現了什麼問題。
我無法啓動Tomcat服務,所以我唯一的選擇是使用JNI/JNA,而標準方式似乎有點複雜。現在我需要用C語言編寫一個複製文件的程序,對吧? –
@YoussefSaih:看看我的編輯另一種方式... –
謝謝,我發現這個解決方案在C#中,我不知道我可以在java中做到這一點[鏈接](http://stackoverflow.com/a/8271759/4810161) –