我希望將一個名爲myFile.file的文件放入是否可以在運行時在C:/ Windows/System32/location中放置myfile.file?
C:/Windows/System32/
位置。
下面是使用java代碼把我的文件。當我執行我的程序時,它會拋出「訪問被拒絕:C:/Windows/System32/myFile.file」。
爲什麼會發生?可以放置在那個位置嗎?
我希望將一個名爲myFile.file的文件放入是否可以在運行時在C:/ Windows/System32/location中放置myfile.file?
C:/Windows/System32/
位置。
下面是使用java代碼把我的文件。當我執行我的程序時,它會拋出「訪問被拒絕:C:/Windows/System32/myFile.file」。
爲什麼會發生?可以放置在那個位置嗎?
對於管理員用戶/提升的應用程序來說,(以及其他許多)系統位置受到限制。 應用程序數據應該存儲在用戶配置文件(或常用應用程序數據)中的用戶應用程序數據文件中。
如果你真的必須寫入到系統文件,那麼你需要通過UAC,或者通過使用ShellExecute()
與runas
動詞運行其它程序或COM高程(如果在Java中是可能的),詢問用戶是否允許
更新
的方法來獲得Java中的正確路徑參見Andrew's answer。
將myFile.file
置於子目錄的user.home
。
子目錄可以是保存該文件的類的包名稱。例如。如果您的主課程是our.com.Main
,請將該文件存儲在${user.home}/our/com/myFile.file
。使用子目錄的原因是爲了防止其他應用程序。 myFile.file
免於覆蓋或干擾您自己的版本。
要獲得位置user.home
,請參閱:
System.getProperty("user.home");
的user.home
這裏的價值是:
Name Value
user.home C:\Users\Andrew
這種技術可靠地工作的Mac。 & * nix,以及Windows。
它必須是可能的,因爲大多數蠕蟲/木馬/病毒都這樣做。你還在寫一個嗎? – Tsar
我是新的這個環境,所以請給我一些信息的細節。提前致謝。 – Aerrow
@Bad顯示名稱:他們可以這樣做,因爲他們可以通過利用錯誤或社會工程來提升知名度。 (事實上,Vista之前的操作系統用戶幾乎總是以管理員身份運行。)在正常的非管理環境下,您不應該能夠將文件放入系統文件夾中。 –