Reputation: 3632
The program created utilizes a 3rd party tool to generate a log file.
However the arguments provided for the the tool requires various files from Directory locations as part of generating the logs. Therefore the main argument of @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru";
would be used to generate the logs.
May someone advise on how to make the arguments of "C:\System Volume Information\" be processed by the system with the white spaces in placed? Thanks!
The codes:
Process process = new Process();
process.StartInfo.FileName = @"C:\test\ftk\ripxp\ripxp.exe";
process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru";
process.StartInfo.CreateNoWindow = false;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
Upvotes: 7
Views: 10672
Reputation: 2738
You really need to use a string.Format along with the Path class:
process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru"
can be rewritten to be a lot cleaner as follows:
string ntuser = @"C:\test\ftk\ntuser.dat";
var args = Path.Combine(@"C:\System Volume Information\", "restoreFolder.Name");
var outs = string.Format("-r {0} -d {1} -p runmru", ntuser, args);
outs.Dump();
Upvotes: 0
Reputation: 30830
Wrap that path in double quotes:
process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d ""C:\System Volume Information\" + restoreFolder.Name + @""" -p runmru";
Upvotes: 2
Reputation: 498992
You need to escape the "
by appending a \
to them (\"
) - for normal strings, or doubling them (""
) for verbatim string literals (those starting with @
):
process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d ""C:\System Volume Information\" + restoreFolder.Name + @""" -p runmru";
Upvotes: 10
Reputation: 67195
If I correctly understood the question, you can wrap the name with quotes:
"... \"C:\System Volume Information\" + restoreFolder.Name + "\"..."
Upvotes: 0
Reputation: 3931
Perhaps
process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru";
should be
process.StartInfo.Arguments = @"-r ""C:\test\ftk\ntuser.dat"" -d ""C:\System Volume Information\""" + restoreFolder.Name + " -p runmru";
Upvotes: 1