Проблема с использованием AddIPAddress при олицетворении пользователя-администратора - PullRequest
6 голосов
/ 20 мая 2009

Я пытаюсь добавить временный IP-адрес в сетевую карту, используя AddIPAddress, когда вы вошли в систему как пользователь без прав администратора. В документации MSDN для AddIPAddress говорится, что ERROR_INVALID_HANDLE возвращается как ошибка, если функция вызывается пользователем без прав администратора.

Учитывая, что мне предшествовал вызов AddIPAddress с API-вызовами LogonUser () и ImpersonateLoggedOnUser (). Теперь мое приложение считает, что оно вошло в систему как администратор, но AddIPAddress все еще не работает с ERROR_INVALID_HANDLE.

MSDN также утверждает, что ..

"Примечание. Групповые политики, корпоративные политики и другие ограничения в сети могут препятствовать успешному завершению этих функций. Убедитесь, что у приложения есть необходимые сетевые разрешения, прежде чем пытаться использовать эти функции."

Можно ли вызвать AddIPAddress, используя олицетворение? если так как? Я предполагаю, что мне нужно изменить разрешения, упомянутые выше, но я не знаю, что изменить в этой области.

Любая помощь будет оценена!

Additonal: Я также нарисовал пробел, пытаясь вызвать netsh (снова вошел в систему как обычный пользователь), используя CreateProcessAsUser, используя дескриптор для олицетворенного пользователя-администратора, чтобы запустить процесс. Всегда возвращает ошибки, указывающие на недостаточные привилегии.

1 Ответ

1 голос
/ 12 июня 2009

Если вы используете Windows Vista, вам может потребоваться повысить привилегии.

В Vista по умолчанию UAC включено. Это делает так, что даже в качестве администратора вы используете маркер ограниченного пользователя, если вы явно не повышаете. Когда вы делаете это, пользователю предоставляется диалоговое окно для разрешения или отклонения запроса.

Подробнее об этом см. Требования к разработке приложений для Windows Vista для совместимости контроля учетных записей пользователей .

Возможно, вы захотите попробовать CheckTokenMembership , чтобы убедиться, что вы поднялись после входа в систему в качестве администратора. Я подозреваю, что вы получаете токен ограниченного пользователя и, следовательно, не выполняете запросы на привилегированные ресурсы.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...