2010-12-14 10 views
0

我有一個程序利用第三方工具來創建日誌文本文件。C#如何自動導航到{GUID}目錄?

但是該工具需要Windows XP的還原點目錄。存儲還原點的目錄是「C:\ System Volume Information_restore {GUID}」。

_restore {GUID}文件夾將包含所有還原點。然而,{GUID}是完全隨機的數字,並且對於每臺計算機都不相同。 「C:\ System Volume Information」目錄通常只包含1個文件夾,即「_random {GUID}」文件夾。

因此,是否有一種方法讓C#程序使用任何代碼或方法自動填充該工具的命令參數?

可能有人請告訴代碼?謝謝!

的代碼:

 Process process = new Process(); 
     process.StartInfo.FileName = @"C:\test\ftk\ripxp\ripxp.exe"; 
     // How to automatically navigate to the {GUID} folder? 
     process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\_restore{GUID} -p runmru"; 
     process.StartInfo.CreateNoWindow = false; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.RedirectStandardInput = true; 
     process.StartInfo.RedirectStandardError = true; 
     process.Start(); 

的第三方工具(2008 H.卡維)參數:

C:\>ripxp -r d:\cases\ntuser.dat -d d:\cases\svi -p userassist 

回答

0

爲什麼不通過目錄找到文件夾列表中查詢該文件夾的位置和環以「_restore」開頭,然後插入你的論點?

DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\System Volume Information\"); 
DirectoryInfo restoreFolder = directoryInfo.GetDirectories().FirstOrDefault(d => 
    d.Name.StartsWith("_restore")); 

if (restoreFolder == null) 
    throw new DirectoryNotFoundException(); 

那麼你應該能夠到該文件夾​​值插入到你的論點

process.StartInfo.Arguments = string.Format(
    @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\{0} -p runmru", 
    restoreFolder.Name); 
+0

感謝您的回答儘管參數現在不工作...... – JavaNoob 2010-12-14 14:36:09

1

這段代碼演示瞭如何獲得最近創建_Restore目錄:

static void Main(string[] args) 
    { 
     DirectoryInfo di = new DirectoryInfo(@"c:\System Volume Information"); 
     DirectoryInfo directoryInfo = null; 
     foreach (var enumerateDirectories in di.GetDirectories("_restore*")) 
     { 
      if (directoryInfo == null || enumerateDirectories.CreationTime > directoryInfo.CreationTime) 
      { 
       directoryInfo = enumerateDirectories; 
      } 
     } 
     if (directoryInfo != null) 
     { 
      Console.WriteLine(directoryInfo.FullName); 
     } 
     Console.ReadLine(); 
    } 
+0

代替其他方法! – JavaNoob 2010-12-14 14:40:20