Hello,
I am attempting to write a Web Method in my Web Service that starts a
process that runs the XCOPY command with passed in parameters. It is failing
on me through code. However, if I take the exact same string it is passing
and past it into a Command prompt, it works perfectly. That told me it may
be a permissions/impersonation issue. I am now running it as a special
ServiceAccount I have created that is a Domain Admin. It still does not
work. I then looked to see if it was returning an error or ExitCode and it
is.
The ExitCode == 4 which for XCOPY means "Initializa tion error occurred.
There is not enough memory or disk space, or you entered an invalid drive
name or invalid syntax on the command line."
Here is my code and the output follows - Can anyone help me here? Do I
really need impersonation or is it some other fix?
FYI: The AddSQLStatement method is simply a way I store information in a
string array for extraction later to determine what happens in my code.
string sXCopy = "\"" + sBaseFolder + sSourceFolder + "\"" +
" \"" + sBaseFolder + sDestination + "\"" +
" /E /V /C /I /O /Y /K";
AddSQLStatement ("XCOPY: " + sXCopy);
AddSQLStatement ("USER: " + System.Environm ent.UserDomainN ame + "\\" +
System.Environm ent.UserName);
AddSQLStatement ("User: " +
System.Security .Principal.Wind owsIdentity.Get Current().Name) ;
try {
Process oProc = new Process();
oProc.EnableRai singEvents = false;
oProc.StartInfo .FileName = "XCOPY";
oProc.StartInfo .Arguments = sXCopy;
oProc.StartInfo .RedirectStanda rdOutput = true;
oProc.StartInfo .UseShellExecut e = false;
oProc.Start();
AddSQLStatement ("StdOut: " + oProc.StandardO utput.ReadToEnd ()); ////
oProc.WaitForEx it();
AddSQLStatement ("Exit Code: " + oProc.ExitCode. ToString()); ////
} catch(Exception e) {
AddSQLStatement ("XCOPY Error: " + e.ToString());
exLastError = e;
} // try-catch
<<<<<< This is the output >>>>>>>>
Exit Code: 4
StdOut: 0 File(s) copied
User: CSDomain\Servic eAccount
USER: CSDOMAIN\Servic eAccount
XCOPY: "\\Cochise\JobF olders\_FolderT emplate"
"\\Cochise\JobF olders\6126_Tes t25e" /E /V /C /I /O /Y /K
--
Thanx,
Grigs
I am attempting to write a Web Method in my Web Service that starts a
process that runs the XCOPY command with passed in parameters. It is failing
on me through code. However, if I take the exact same string it is passing
and past it into a Command prompt, it works perfectly. That told me it may
be a permissions/impersonation issue. I am now running it as a special
ServiceAccount I have created that is a Domain Admin. It still does not
work. I then looked to see if it was returning an error or ExitCode and it
is.
The ExitCode == 4 which for XCOPY means "Initializa tion error occurred.
There is not enough memory or disk space, or you entered an invalid drive
name or invalid syntax on the command line."
Here is my code and the output follows - Can anyone help me here? Do I
really need impersonation or is it some other fix?
FYI: The AddSQLStatement method is simply a way I store information in a
string array for extraction later to determine what happens in my code.
string sXCopy = "\"" + sBaseFolder + sSourceFolder + "\"" +
" \"" + sBaseFolder + sDestination + "\"" +
" /E /V /C /I /O /Y /K";
AddSQLStatement ("XCOPY: " + sXCopy);
AddSQLStatement ("USER: " + System.Environm ent.UserDomainN ame + "\\" +
System.Environm ent.UserName);
AddSQLStatement ("User: " +
System.Security .Principal.Wind owsIdentity.Get Current().Name) ;
try {
Process oProc = new Process();
oProc.EnableRai singEvents = false;
oProc.StartInfo .FileName = "XCOPY";
oProc.StartInfo .Arguments = sXCopy;
oProc.StartInfo .RedirectStanda rdOutput = true;
oProc.StartInfo .UseShellExecut e = false;
oProc.Start();
AddSQLStatement ("StdOut: " + oProc.StandardO utput.ReadToEnd ()); ////
oProc.WaitForEx it();
AddSQLStatement ("Exit Code: " + oProc.ExitCode. ToString()); ////
} catch(Exception e) {
AddSQLStatement ("XCOPY Error: " + e.ToString());
exLastError = e;
} // try-catch
<<<<<< This is the output >>>>>>>>
Exit Code: 4
StdOut: 0 File(s) copied
User: CSDomain\Servic eAccount
USER: CSDOMAIN\Servic eAccount
XCOPY: "\\Cochise\JobF olders\_FolderT emplate"
"\\Cochise\JobF olders\6126_Tes t25e" /E /V /C /I /O /Y /K
--
Thanx,
Grigs
Comment