我有一个程序,它利用第三方工具创建日志文本文件。
但是该工具需要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
答案 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);