[python-win32] wrong results in service running mode

Mark Hammond mhammond at skippinet.com.au
Thu Apr 20 01:01:43 CEST 2006


> One piece of the program is to check a file exist or not as follows:
>
>          szNormPath= os.path.normpath(strFileName)
>          nRetCode = os.access(szNormPath, os.F_OK)
>          # nRetCode = os.path.exists(szNormPath)
>
> When the file path is C:\shared\t.txt, no problem.
> When the path becomes L:\t.txt, then I got problems:
> nRetCode always is False(0), here L: is a mapped drive
> L: = C:\shared. So L:\t.txt and C:\shared\t.txt
> point to the same file.

This is almost an FAQ for services and has nothing to do with Python.

When running from a DOS box, the service is running as your user, so has all
your drive mappings etc.  When running as a service it generally runs as a
different user, so does not.  Worse, the LocalSystem account generally has
no network access.

The solution is generally just to use the complete UNC name '\\server\share'
in your Python program - this generally works fine (but still will generally
*not* work for the LocalSystem account - so you will also need to change the
username)

Cheers,

Mark



More information about the Python-win32 mailing list