C# exe calling an exe (process.start) - not working on one server

G

Guest

Hello,
I have a C# program that builds a txt file and then, calls an external
exe (this external exe simply imports this txt file into a DBF (DBase) file.
(we copy a template of the DBF file into the process folder where the exe
lies and then this clipper EXE does the data move from the txt file to the
DBF file).


This process works fine on at least 3 PCs (Win 2K Pro and Win XP Pro) -
irrespective of whether I schedule the process or run it by double clicking
the executable. However, when I try to run this same process on a Win2000
server, this data move doesn't happen (the DBF file doesn't get populated).
Since it is a production server, I cannot debug the code there and I am
unable to recreate the problem on any of the test machines. The program
doesn't crash or throw an exception - just doesn't do the data move and
continues as though nothing is wrong. If I call this second exe (for the data
move) manually, it works fine and moves the data.

I have this C# program set up on the windows scheduler and it is running
with privileges of an ID that has Local Adminitrator rights.

Any suggestions as to how to resolve this?
Thanks
- Joseph
 
B

bazad

Joseph said:
Hello,
I have a C# program that builds a txt file and then, calls an external
exe (this external exe simply imports this txt file into a DBF (DBase) file.
(we copy a template of the DBF file into the process folder where the exe
lies and then this clipper EXE does the data move from the txt file to the
DBF file).


This process works fine on at least 3 PCs (Win 2K Pro and Win XP Pro) -
irrespective of whether I schedule the process or run it by double clicking
the executable. However, when I try to run this same process on a Win2000
server, this data move doesn't happen (the DBF file doesn't get populated).
Since it is a production server, I cannot debug the code there and I am
unable to recreate the problem on any of the test machines. The program
doesn't crash or throw an exception - just doesn't do the data move and
continues as though nothing is wrong. If I call this second exe (for the data
move) manually, it works fine and moves the data.

I have this C# program set up on the windows scheduler and it is running
with privileges of an ID that has Local Adminitrator rights.

Any suggestions as to how to resolve this?
Thanks
- Joseph

Add logging.

I am really guessing. It might be a security issue. I know, I know...

By the way, Win 2K cmd.exe has some command line size limitations.
 
G

Guest

Thank you for your quick response! I am not familier with how to add
logging... is that on the server or is that something that needs to be done
while I build the C# code?
Thanks again!
 
W

William Stacey [MVP]

Add logging (i.e. Write debug text to a file) to see what is happening when
the thing kicks off. It may not be execing at all - maybe the cmd line is
not found. Check the exit code from the process (if you set exit codes in
the second exe.) Also, I ran into a similar issue where I knew the app
started but just stalled. The problem what Std out redirection related. If
the std out or std err streams get full, it can block the progress of the
app and just freeze. You can test this by setting a timeout on the process
to kill it after X seconds. You should have some timeout anyway to prevent
and/or be notified of such things. The solution to my problem would have
been to create another thread to read the std out so it would not block
(still on my list.) hth
 
C

Chris Dunaway

Since it is a production server, I cannot debug the code there and I am
unable to recreate the problem on any of the test machines. The program

The VS.Net debugger can attach to processes on other machines. You can
debug across the network, assuming you have access to the machine and the
necessary permissions.

Click Tools->Debug Processes

You can specify the machine name in the Name: dropdown and then a list of
the processes will appear. Select the right one and click attach. Your
debugger will now stop at breakpoints!

--
Chris

dunawayc[AT]sbcglobal_lunchmeat_[DOT]net

To send me an E-mail, remove the "[", "]", underscores ,lunchmeat, and
replace certain words in my E-Mail address.
 
G

Guest

Thank you all for your quick help and suggestions! Unfortunately, I don't
have the source code for the exe that is being called by the C# program, so
am unable to debug it (to set some exit codes - this exe is an old pgm and
doesn't return any return codes).

However, a co-worker pointed out the problem in this case - turns out that
because I was using the windows scheduler to schedule this C# program after
RDP'ing into the server, and was logging off (rather than disconnecting), the
process didn't work. Apparently, the called exe needs the user to be logged
on. Anyway, if I disconnect from my RDP session (instead of logging off), the
process works fine and the data gets pulled into the DBF file!

Thanks for your suggestions though - I'm sure I will get to use them for
other problems that I face in the future!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top