Прежде всего спасибо вам за то, что вы читаете этот вопрос.Использование CreateProcessAsUser в python не передает среду пользователя созданному процессу
я запустить приложение исполняемого файла (назовём его MYAPP.EXE) успешно из службы окон под пользователем Interactive используя следующий код:
#MyWindowsService.py
console_session_id = win32ts.WTSGetActiveConsoleSessionId()
console_user_token = win32ts.WTSQueryUserToken(console_session_id)
my_app_path= os.path.normpath(r"/Path\to\MyApp.exe")
startup = win32process.STARTUPINFO()
priority = win32con.NORMAL_PRIORITY_CLASS
handle, thread_id ,pid, tid = win32process.CreateProcessAsUser(console_user_token, my_app_path, None, None, None, True, priority, None, None, startup)
Изнутри MyApp мне нужно получить пути среды, которые принадлежат интерактивному пользователю . Например, я использую следующий код, чтобы получить путь для пользователя% AppData%:
#MyApp.py
user_app_data_path = os.getenv('APPDATA')
Она должна возвращать:
C: \ Users \ Interactive-пользовательского имени \ AppData \ Roaming
Однако возвращаемое значение:
C: \ Windows \ System32 \ Config \ systemprofile \ AppData \ Roaming
Это означает, что хотя MyApp.exe запущен под именем имя пользователя интерактивного пользователя, он получает среду для пользователя пользователя, которому работает служба Windows.
Мой вопрос в том, как я могу получить пути к среде, которые принадлежат пользователю, а не системе.
Многие благодарственное,
P.S. Я использую py2exe для преобразования MyApp и службы Windows в исполняемые файлы.