2011-08-02 14 views
1

我希望將一個名爲myFile.file的文件放入是否可以在運行時在C:/ Windows/System32/location中放置myfile.file?

C:/Windows/System32/位置。

下面是使用java代碼把我的文件。當我執行我的程序時,它會拋出「訪問被拒絕:C:/Windows/System32/myFile.file」。

爲什麼會發生?可以放置在那個位置嗎?

+1

它必須是可能的,因爲大多數蠕蟲/木馬/病毒都這樣做。你還在寫一個嗎? – Tsar

+0

我是新的這個環境,所以請給我一些信息的細節。提前致謝。 – Aerrow

+0

@Bad顯示名稱:他們可以這樣做,因爲他們可以通過利用錯誤或社會工程來提升知名度。 (事實上​​,Vista之前的操作系統用戶幾乎總是以管理員身份運行。)在正常的非管理環境下,您不應該能夠將文件放入系統文件夾中。 –

回答

2

對於管理員用戶/提升的應用程序來說,(以及其他許多)系統位置受到限制。 應用程序數據應該存儲在用戶配置文件(或常用應用程序數據)中的用戶應用程序數據文件中。

如果你真的必須寫入到系統文件,那麼你需要通過UAC,或者通過使用ShellExecute()runas動詞運行其它程序或COM高程(如果在Java中是可能的),詢問用戶是否允許

更新
的方法來獲得Java中的正確路徑參見Andrew's answer

+0

感謝您的寶貴回答,我新接觸此平臺,請舉一個例子或任何說明。 – Aerrow

+0

我不能用於Java。抱歉 – Deanna

1

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。

相關問題