, где PInfo — как раз PROCESS_INFORMATION. Теперь интересно, чем мне может помощь информация о запущенном процессе. А НУЖНО следующее. Выше я запустил под другим пользователем приложение Excel. И теперь в этом приложении нужно открыть файл — а для этого до приложения надо как-то достучаться. Вот как, если я знаю только id процесса? Есть идея по id узнать HWND, но я пока не знаю как...
Примечание. Если сразу открывать нужный файл внутри функции — не получается. Отчасти может потому, что у ТЕКУЩЕГО пользователя доступа к директории и файлу НЕТ! Доступ только у пользователя, под которым открывается Excel. Вот поэтому все это и затеял
Здравствуйте, Lonely Dog, Вы писали:
LD>Здравствуйте, agendus, Вы писали:
LD>Может просто передать имя нужного файла через командную строку?
Я же говорю — пробовал так. Файл не открывается. Когда я программно открываю новый Excel под др. пользователем, а потом РУКАМИ открываю в нем нужный файл — он открывается. Вот поэтому и хочу после запуска получить доступ к объекту Excel, имея на входе ID процесса.
Здравствуйте, agendus, Вы писали:
A>Здравствуйте, Lonely Dog, Вы писали:
LD>>Здравствуйте, agendus, Вы писали:
LD>>Может просто передать имя нужного файла через командную строку?
A>Я же говорю — пробовал так. Файл не открывается. Когда я программно открываю новый Excel под др. пользователем, а потом РУКАМИ открываю в нем нужный файл — он открывается. Вот поэтому и хочу после запуска получить доступ к объекту Excel, имея на входе ID процесса.
Здравствуйте, Ovl, Вы писали:
Ovl>Здравствуйте, agendus, Вы писали:
A>>Здравствуйте, Lonely Dog, Вы писали:
LD>>>Здравствуйте, agendus, Вы писали:
LD>>>Может просто передать имя нужного файла через командную строку?
A>>Я же говорю — пробовал так. Файл не открывается. Когда я программно открываю новый Excel под др. пользователем, а потом РУКАМИ открываю в нем нужный файл — он открывается. Вот поэтому и хочу после запуска получить доступ к объекту Excel, имея на входе ID процесса.
Ovl>совсем-совсем не получается? а что говорит?
"Говорит" уже запущенный Excel — что дескать нет такого файла, надо бы проверить правильность имени и пути. Но! ФАЙЛ ЕСТЬ И ИМЯ ПРАВИЛЬНОЕ!!!
Здравствуйте, agendus, Вы писали:
A>Здравствуйте, Ovl, Вы писали:
Ovl>>Здравствуйте, agendus, Вы писали:
A>>>Здравствуйте, Lonely Dog, Вы писали:
LD>>>>Здравствуйте, agendus, Вы писали:
LD>>>>Может просто передать имя нужного файла через командную строку?
A>>>Я же говорю — пробовал так. Файл не открывается. Когда я программно открываю новый Excel под др. пользователем, а потом РУКАМИ открываю в нем нужный файл — он открывается. Вот поэтому и хочу после запуска получить доступ к объекту Excel, имея на входе ID процесса.
Ovl>>совсем-совсем не получается? а что говорит?
A>"Говорит" уже запущенный Excel — что дескать нет такого файла, надо бы проверить правильность имени и пути. Но! ФАЙЛ ЕСТЬ И ИМЯ ПРАВИЛЬНОЕ!!!
если он пытается открыть файл, то значит он уже запущен. полагаю со всеми нужными правами проблема в имени файла или в процессе запуска?
У меня есть локальная копия нужного файла — только что открыл его без проблем — значит проблема НЕ В ИМЕНИ ФАЙЛА. ...и не в пути — путь я задаю верный 100%
Здравствуйте, agendus, Вы писали:
A>У меня есть локальная копия нужного файла — только что открыл его без проблем — значит проблема НЕ В ИМЕНИ ФАЙЛА. ...и не в пути — путь я задаю верный 100%
Здравствуйте, Ovl, Вы писали:
Ovl>Здравствуйте, agendus, Вы писали:
A>>
A>>если он пытается открыть файл, то значит он уже запущен. полагаю со всеми нужными правами проблема в имени файла или в процессе запуска?
A>>Вот и я полагаю, что после запуска Excel уже есть нужные права доступа. Сообщение о невозможности открыть файл я вижу уже при активном Excel.
Ovl>может тогда impersonate попробовать?
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Здравствуйте, agendus, Вы писали:
A>>У меня есть локальная копия нужного файла — только что открыл его без проблем — значит проблема НЕ В ИМЕНИ ФАЙЛА. ...и не в пути — путь я задаю верный 100%
LT>Путь закавычь.
, так сделано уже — закавычил Кстати, засада может быть в том, что имя файла с пробелами? Здесь оно вымышлено — но суть та же — имя С ПРОБЕЛАМИ, блин, и не мне это менять.
Здравствуйте, agendus, Вы писали:
A>Здравствуйте, Ovl, Вы писали:
Ovl>>Здравствуйте, agendus, Вы писали:
A>>>
A>>>если он пытается открыть файл, то значит он уже запущен. полагаю со всеми нужными правами проблема в имени файла или в процессе запуска?
A>>>Вот и я полагаю, что после запуска Excel уже есть нужные права доступа. Сообщение о невозможности открыть файл я вижу уже при активном Excel.
Ovl>>может тогда impersonate попробовать?
A>То есть? Что это значит?
я имел ввиду явный логон (LogonUser). Но возможно это не поможет.
Можно скопировать этот файл туда, куда пользователь имеет доступ?
Здравствуйте, Ovl, Вы писали:
Ovl>Здравствуйте, agendus, Вы писали:
A>>Здравствуйте, Ovl, Вы писали:
Ovl>>>Здравствуйте, agendus, Вы писали:
A>>>>
A>>>>если он пытается открыть файл, то значит он уже запущен. полагаю со всеми нужными правами проблема в имени файла или в процессе запуска?
A>>>>Вот и я полагаю, что после запуска Excel уже есть нужные права доступа. Сообщение о невозможности открыть файл я вижу уже при активном Excel.
Ovl>>>может тогда impersonate попробовать?
A>>То есть? Что это значит?
Ovl>я имел ввиду явный логон (LogonUser). Но возможно это не поможет.
Ovl>Можно скопировать этот файл туда, куда пользователь имеет доступ?
Думаю о варианте LogonUser -> CreateProcessAsUser вместо CreateProcessWithLogonW... но разве суть не одна и та же? То есть сначала гарантированно залогиниться под новым пользователем, и потом уж этот hToken передавать для запуска? Есть еще вариант SHCreateProcessAsUserW... блин весь API не перероешь. Вот найти бы функцию, которая из ID процесса даст доступ к объекту.
А копировать файл туду где есть доступ нельзя. Можно б было — вся эта заваруха и не поднималась бы
A>Думаю о варианте LogonUser -> CreateProcessAsUser вместо CreateProcessWithLogonW... но разве суть не одна и та же? То есть сначала гарантированно залогиниться под новым пользователем, и потом уж этот hToken передавать для запуска? Есть еще вариант SHCreateProcessAsUserW... блин весь API не перероешь. Вот найти бы функцию, которая из ID процесса даст доступ к объекту. A>А копировать файл туду где есть доступ нельзя. Можно б было — вся эта заваруха и не поднималась бы
Здравствуйте, Ovl, Вы писали:
A>>Думаю о варианте LogonUser -> CreateProcessAsUser вместо CreateProcessWithLogonW... но разве суть не одна и та же? То есть сначала гарантированно залогиниться под новым пользователем, и потом уж этот hToken передавать для запуска? Есть еще вариант SHCreateProcessAsUserW... блин весь API не перероешь. Вот найти бы функцию, которая из ID процесса даст доступ к объекту. A>>А копировать файл туду где есть доступ нельзя. Можно б было — вся эта заваруха и не поднималась бы
Ovl>дело в том, что по умолчанию excel наверное запускается по DDE Ovl>Посмотрите заметку http://www.vadriano.com/excel-vb/2007/04/12/how-to-open-excel-files-in-a-new-application-instance/, и сравните со своими настройками Open для Excel.
Ovl>Попробуйте вместо "excel <somefile>" использовать "<fullexcelpath>/excel.exe <somefile>"
Непонятно, как это может влиять. Попробовал — прописал полный путь к excel.exe — та же петрушка...