2009-02-06 49 views
1

我有一個小托盤應用程序想要寫入Program Files目錄下的自己的文件夾。我知道這不是一個終極設計,我會解決它,但首先我想了解它是如何工作的。VirtualStore無法在Vista上運行x64

在32位Vista機器上運行它,它將文件寫入到VirtualStore,它的工作原理與它應該一樣。

但是,當在Vista 64位機器上安裝時,我立即遇到UnauthorizedAccessException,嘗試寫入Program Files(和Program Files(x86))中的目錄。

VirtualStore重定向似乎無法在Vista 64位上運行。有任何想法嗎?

這是一個用Visual Studio 2008編寫的C#應用​​程序,我使用FileStream obj將流持久化到磁盤。

+0

讓這個打開並關閉更早的重複 – Alnitak 2009-02-06 10:47:40

+0

人們爲我做了這些,謝謝! – Niklas 2009-02-06 11:15:20

回答

1

所以我實際上通過編譯所有項目到目標平臺x86來得到這個工作。因此,x64不能在Vista 64上使用VirtualStore,也不能編譯爲「任何CPU」。而且我必須爲整個解決方案(在配置管理器中)設置它,只是爲每個單獨的項目設置它不起作用。

使用AppData文件夾或IsolatedStorage重寫它的時間。感謝所有的幫助!

1

有關於錯誤的更多信息?
您是否使用sysinternals工具監視執行/訪問錯誤?
請看看事件查看器是否有錯誤。

1

我現在就解決它。你永遠不應該把你的東西寫到那個目錄,它違反了指導原則。當多個用戶同時登錄到服務器時,即使在VISTA之前,您的產品也不會工作。

Vista 64位將檢測到您是32位應用程序,並將自動將您嘗試修改「Program Files」爲「Program Files x86」的嘗試重定向。實際上,它完全使您相信您正在運行32位系統(請參閱here)。

我懷疑在程序文件下的程序嘗試改變這個模擬層有額外的保護。或者,也許在Vista 64位(或更有可能的仿真層)下,ACL設置得更好。底線:不要做你正在做的事情,微軟一直告訴我們現在不要這麼做。

相關問題