DeleteIpForwardEntry Доступ запрещен в Vista

Вызов DeleteIpForwardEntry() прекрасно работает в Windows XP и Windows 7. Однако в Windows Vista он завершается ошибкой с ERROR_ACCESS_DENIED.

В документации говорится, что "пользователю не хватает необходимых административных привилегий на локальном компьютере или приложение не запускается в расширенной оболочке в качестве встроенного администратора (администратора RunAs)".

Ну, в моем случае пользователь является администратором на локальном компьютере, и приложение запускается при входе в систему через ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Run, поэтому я не могу сказать, чтобы он запускался в "улучшенной оболочке".

Есть ли способ решить эту ситуацию с "Catch 22" в Vista?

1 ответ

Я не понимаю, почему это будет работать в Windows 7. Документы указывают, что ошибка будет такой же.

В Windows Vista и более поздних версиях функцию DeleteIpForwardEntry может вызывать только пользователь, вошедший в систему как член группы "Администраторы". Если DeleteIpForwardEntry вызывается пользователем, который не является членом группы "Администраторы", вызов функции завершится ошибкой и будет возвращено сообщение ERROR_ACCESS_DENIED.

Кроме того, ваше сообщение указывает, что вошедший в систему пользователь является администратором. Возможно ли, что ваши тесты Windows 7 и Windows Vista предназначены для разных пользователей - в Windows 7 ваш тестовый пользователь является администратором, а на машине с Windows Vista тестовый пользователь - нет?

Нет способа обойти это, запустив приложение таким способом. Можете ли вы повторно реализовать это как службу Windows, работающую под учетной записью администратора, которая воздействует на события интерактивного входа в систему на компьютере, чтобы манипулировать конфигурацией IP по мере необходимости?

Другие вопросы по тегам