C#如何自动导航到{GUID}目录?

时间:2010-12-14 13:17:44

标签: c# navigation directory 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. Carvey)参数:

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

2 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分: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);