If you only have those two machines, you aren't on a NT domain, you've
got a workgroup. A Windows domain is hosted by a server OS, and XP can
only be a client on a domain. Without being on an NT domain, security
is much sloppier. In some ways that makes things easier, but you may
hit a brick wall if you need more than one kind of simultaneous access
to another machine.
Is this EXE file you want to run on the server something out of your
control, or could you customize that as well? Because if you can, then
the distinction between that and your server-python program is probably
unimportant. Call the programs you might want to run: X1, X2, X3.
In order to run X1 on that server without opening a console (or remote
desktop, or whatever) on it, you will have to have something else
already running which is willing to be a proxy on your behalf. You then
communicate with that program to tell it what to run, and when. I
suggested a batch file for that program, call it S. It could just as
easily have been a python script, but there's no advantage that I can
see. The idea is to make sure that S is always running (which is why
you put it into the scheduler; it'll be restarted whenever the machine
is booted).
Anyway, the idea is that S is a very lightweight program, and it can
launch any possible Xn. And the only question is how you want the
client to talk to S. If S is a fancier program, you might use sockets,
or whatever, but on a local system, the file system works pretty well.
And a batch file is about as lightweight as you can get; the only
external program it needs is "sleep.exe".
It's quite possible that DCOM (for example) includes something that acts
like S, but when I was working in that field 15 years ago, it was very
messy, and fragile. I favor simpler systems when they're possible. If
you want to pursue this route, check out the Win32 extensions
http://sourceforge.net/projects/pywin32/(or just get ActivePython,
which includes them with the usual stuff). See function
CoCreateInstance <pythoncom__CoCreateInstance_meth.html>, which can
launch an OLE Automation Server remotely.
Or you could run SimpleXMLRPCServer on your server (again, from the
scheduler). Once started, it watches for requests over the internet.
Once X1 is running, you probably want to use sockets or something like
that to communicate between your client and X1. At that point, the
overhead isn't as important.
HTH
DaveA