在 Windows 作業系統中,會將一些預設的系統音效檔案,裝在 Windows 安裝目錄下的 Media 目錄裡頭—比方說,如果你將 WIndows XP 裝在C:\Windows 目錄下,那麼,就是 C:\Windows\media 這個目錄。如果您想要使用一些系統內建的音效檔案,除了 System.Media.SystemSounds 之外,大概就得往這個目錄找。
然而這個目錄不一定會是在同一個位置,因為 WIndows 系統很有可能安裝在其他的地方,System.Environment.SpecialFolder 所提供的幾個提供特殊目錄的路徑 Class Method 中,又剛好沒有提供 Media 這個目錄的路徑位置。
在 .Net Framework 中,想要知道這個路徑究竟該是哪個位置,就只能夠往 registry 動腦筋,至少我們可以從 registry 設定中,找到這筆資料。如果要透過 C# 實做,首先我們要引入 Microsoft.Win32 這個 name space:
using Microsoft.Win32;
然後使用 RegistryKey 這個類別,讀取 registry。
RegistryKey registryKey = Registry.LocalMachine; registryKey = registryKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion", false); string m_mediaPath = registryKey.GetValue("MediaPath").ToString();
最後就可以取得音效檔案的列表了。
DirectoryInfo dirInfo = new DirectoryInfo(m_mediaPath); FileInfo[] fileInfo = dirInfo.GetFiles("*.wav");