2013-06-05 25 views
2

我試圖使用qApp->applicationDirPath()來確定我的應用程序在Windows 7 x64上的目錄路徑。 在Windows 7 x32和其他平臺(XP 32,64)上,它工作正常。但是當應用程序從「C:\Program Files (x86)\MyApplication」運行時發生了一些事情。它返回「C:\Users\some_user\AppData\Local\VirtualStore\Program Files (x86)\MyApplication\」而不是「C:\Program Files (x86)\MyApplication\」。它出什麼問題了?如何確定Windows 7 x64上的應用程序文件路徑?

我試圖改變UAC設置,但它沒有成功。沒有效果。或者,也許我錯了?

有什麼想法?我如何確定Windows 7 x64上的真實目錄?

回答

1

返回的路徑實際上是硬盤上的真實路徑。無論何時在Windows 7-64下安裝C:\,這實際上都會發送到不同的文件夾,並且只能在C:下虛擬顯示。 您可以使用Dos Box進行測試。

+0

但在不同的機器上我有不同的效果。在我的(我正在創建應用程序)路徑'C:\ Program Files(x86)'上。在用戶的機器路徑上是'C:\ Users \ some_user \ AppData \ Local \ VirtualStore \ Program Files(x64)'。兩者都有Windows 7 x64。怎麼了? –

+0

我試過使用'argv [0]',現在它工作。不同計算機上的相同路徑。 –

1

當您安裝應用程序時,您的安裝過程需要以管理權限運行,或者需要請求特權,否則它將不具有對Program Files目錄的寫入權限。

如果您沒有足夠的權限,則您嘗試將任何內容寫入Program Files目錄將自動進行虛擬化。

Microsoft Knowledge base報價:

當這個應用程序寫入到系統目錄,如向夾%programfiles%,Windows Vista和Windows 7的重定向寫操作和讀操作的用戶特定位置在用戶的配置文件文件夾(%localappdata%\ VirtualStore)中。默認情況下,此位置是C:\ Users \ User_name \ AppData \ Local \ VirtualStore \ Program Files \ Application_name。

假設在其中一臺計算機上,進行安裝的人員擁有足夠的權利或禁用了UAC。這就是爲什麼它在一個而不是另一個上工作的原因。

+0

UAC禁用時爲什麼不起作用?好的,我會試着用管理員權限運行我的應用程序(我會強制它)。 –

相關問題