Создание правила брандмауэра для процесса, выполняющегося в учетной записи пользователя без прав администратора - PullRequest
1 голос
/ 16 апреля 2011

У меня есть основное требование - гладко запускать мое приложение в Windows, создавая правила брандмауэра при появлении соответствующего запроса, для которого включен брандмауэр Windows.

Когда я вхожу в систему как пользователь с правами администраторакогда я запускаю свое приложение в первый раз, брандмауэр выдает приглашение, я сообщаю ему, чтобы разрешить моему приложению и создать правило, хорошо.

Однако, когда я включаю свой компьютер, войдите в систему какпользователь, не являющийся администратором, и я запускаю свое приложение, брандмауэр появляется с подсказкой, как и ожидалось;однако, когда я нажимаю на те же параметры, что и у пользователя с правами администратора, приглашение брандмауэра постоянно появляется, хотя я нажимал Allow / ok каждый раз, когда появляется приглашение.Запрос исчезает только тогда, когда я нажимаю «Отменить / Блокировать» запуск приложения, что, очевидно, не то, что я хочу сделать.

Итак, возникает вопрос на миллион долларов: что и как я должен изменитькод приложения для бесперебойной работы благодаря успешному созданию правила брандмауэра при первом нажатии на приглашение брандмауэра, чтобы разрешить работу моего приложения;точно так же, как это работает, когда я запускаю свое приложение как пользователь с правами администратора.

Я немного поискал в сети и понял, что пользователи без прав администратора не могут изменять правила брандмауэра (даже не могутсоздать их ???).Кстати, я протестировал этот сценарий на Windows XP, Vista 7 и x86 и x64 с одинаковыми результатами.

Если кто-то сталкивался и / или решил подобные проблемы, поделитесь своими знаниями.Если я что-то упустил, пожалуйста, дайте мне понять, что мне не хватает.

Спасибо

1 Ответ

1 голос
/ 16 апреля 2011

Я не думаю, что вы пытаетесь возможно в non-admin аккаунте.Вы можете попытаться получить привилегию admin с помощью функции windows runas, создав новый процесс, чтобы у пользователя запрашивались username и password учетной записи администратора, которая выдала бы вашу программу.требуемый доступ для создания правил брандмауэра для вашей программы.

Вы также можете взглянуть на CreateProcessAsUser или LogOnUSer .В основном, чтобы преуспеть в том, что вы пытаетесь сделать, вам нужен токен, представляющий учетную запись администратора или учетную запись с правами администратора.

...