0
給定一個應用程序「Foo」,它可以安裝帶或不帶清單(位於「程序文件」)在Windows Vista下,也有應用程序安裝路徑「bar」的子目錄:找到另一個應用程序的數據目錄
如何從不使用文件和註冊表虛擬化的另一個(C#)應用程序找到\ foo \ bar的實際路徑。
有沒有乾淨的方式做到這一點?
給定一個應用程序「Foo」,它可以安裝帶或不帶清單(位於「程序文件」)在Windows Vista下,也有應用程序安裝路徑「bar」的子目錄:找到另一個應用程序的數據目錄
如何從不使用文件和註冊表虛擬化的另一個(C#)應用程序找到\ foo \ bar的實際路徑。
有沒有乾淨的方式做到這一點?
在system.IO中有一個叫Directory.GetDirectories的方法。
你可以使用它遍歷,檢查名稱foo(如果它在根目錄中),然後進入bar。
如果您還需要驅動器名稱,則可以使用DriveInfo.GetDrives。這些應該可以幫助你搜索它。例如:
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
string[] dirs = Directory.GetDirectories(d.name, "foo\bar");
foreach (string dir in dirs)
{
//you have your foo bar!
}
}
不是真的;這個想法是你不應該搞亂另一個應用程序的數據。 – 2009-09-28 21:19:27
如果您知道持有「Foo」的程序集的名稱,則可以使用Assembly.Location屬性查找路徑。 – 2009-09-29 18:30:45