2012-06-22 76 views
3

可能重複:
C# - How to get Program Files (x86) on Windows Vista 64 bit搜索使用環境變量下,兩個PROGRAMFILES和PROGRAMFILES(X86)++和C#/ VB.NET

我想推出一個第三方程序從我自己的。我在Program FilesProgram Files (x86)中做了一個快速搜索,我剛剛意識到getenv("ProgramFiles")返回的路徑實際上取決於我是在x64還是在Win32中運行。

如何搜索(無論是在C++和C#或VB.NET)兩個Program Files文件夾,使用環境變量而不是硬編碼的名字 - 因爲無論用戶機器上運行的版本,我的計劃,用戶可能有另一個安裝在不同的版本?

現在我的代碼:在C++:

​​3210 在VB.NET

System.Environment.GetEnvironmentVariable("ProgramFiles") 

我看着這個來源:http://msdn.microsoft.com/en-us/library/aa365743

但如果我實現他們說,我什麼得到x86所有的時間...

回答

1
+1

根據System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)返回 「C:\ Program Files」 下的64位計算機上,除非該代碼被構建爲目標x86,在這種情況下,它返回「C:\ Program Files(x86)」。 – KF2

+0

我會盡快嘗試,任何想法如何在C++中做到這一點? – Thalia

+1

對於程序文件: TCHAR pf [MAX_PATH]; SHGetSpecialFolderPath( 0, pf, CSIDL_PROGRAM_FILES, FALSE); – KF2

1

您可以使用下面的例獲得,

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)