Я пишу Windows-приложение на C ++ (A), которое использует LogonUser, LoadUserProfile и ImpersonateLoggedOnUser для получения прав другого пользователя (Y).
Значение A начинает использовать пользователя, вошедшего в систему на рабочей станции (X). Если пользователь хочет повысить свои права, он может просто нажать кнопку и войти в систему как другой пользователь без необходимости выходить из окна и снова входить в систему.
Ситуация теперь (согласно возвращаемым значениям функций): LogonUser работает, LoadUserProfile работает и ImpersonateLoggedOnUser также работает.
После подражания я начинаю другой процесс. Этот процесс представляет собой приложение (B), которому требуется элемент управления OCX.
Это не удается, и приложение сообщает мне, что файл .oxc установлен неправильно.
Дело в том, что, если я запускаю B напрямую как пользователь, вошедший в систему на компьютере (X), это работает.
Если я запускаю B напрямую как пользователь (Y), которому я хочу повысить свои права, используя A., это работает.
Если я вошел в систему как (X) и в проводнике выбрал «запустить как» (Y), это работает!
Знаете ли вы, какие шаги мне нужно сделать, чтобы сделать то же самое, что и диалог "запустить как" из окон?