Я установил драйвер принтера PostScript и настроил REDMON (redmonnt.dll) для перенаправления вывода postscript в мою программу. В моей довольно простой программе c я собираю данные из STDIN и могу успешно сохранить их в файл .ps. Файл выглядит хорошо.
Однако я хочу запустить gsview.exe для просмотра файла. Если я вызываю ShellExecute, в Windows 7 происходит сбой из-за проблем с разрешениями. Кажется, что моя программа вызывается под другой учетной записью пользователя (LOCAL SERVICE). Поэтому я ищу способ запустить gsview.exe под определенным именем пользователя (пользователя, который инициировал задание печати), которое доступно для программы в переменной REDMON_USER, а также SESSIONID.
Q: Каковы минимальные вызовы WinAPI, необходимые для запуска программы с указанием имени пользователя и идентификатора сеанса?
Любые примеры кода на C / C ++, .NET были бы очень полезны.
РЕДАКТИРОВАТЬ: я пытаюсь сделать что-то очень похожее на redrunee (от redmonee). Я не хочу использовать redrunee, потому что он ненадолго открывается в окне консоли.
Примечание:
1) Программа вызывается службой принтера как учетная запись [LOCAL SERVICE].
2) Первый параметр Имя пользователя (REDMON_USER), по сути, указывает на пользователя, который в данный момент смотрит на экран