我有一个基本要求 - 通过在出现提示时创建防火墙规则来在 Windows 上顺利运行我的应用程序,并打开 Windows 防火墙。
当我第一次运行我的应用程序时以具有管理员权限的用户身份登录到我的系统时,防火墙出现提示,我通知它允许我的应用程序并创建一个规则,很好。
但是,当我打开我的 PC,以非管理员用户身份登录并运行我的应用程序时,防火墙出现了预期的提示;但是,当我单击与管理员用户相同的选项时,即使每次出现提示时我都单击允许/确定,防火墙提示仍不断弹出。只有当我单击“取消/阻止”应用程序运行时提示才会消失,这显然不是我想要做的。
因此,百万美元的问题来了,我应该更改什么以及如何更改我的应用程序代码,以便在我第一次单击防火墙提示以允许我的应用程序时成功创建防火墙规则来顺利运行;当我以具有管理员权限的用户身份运行我的应用程序时,它的工作方式完全相同。
我在网上做了一点搜索,了解到非管理员用户不能修改防火墙规则(甚至不能创建它们???)。顺便说一句,我已经在 Windows XP、Vista 7 x86 和 x64 上测试了这种情况,结果相同。
如果有人遇到和/或解决了类似问题,请分享您的知识。如果我遗漏了什么,请让我明白我遗漏了什么。
谢谢
最佳答案
我不认为您在 non-admin
帐户中尝试的是可能的。您可以尝试通过创建新进程使用 Windows runas
功能获得 admin
权限,以便提示用户输入 username
和管理员帐户的 密码
,这将为您的程序提供为您的程序创建防火墙规则所需的访问权限。
您也可以查看 CreateProcessAsUser或 LogOnUSer .基本上,为了成功完成您尝试做的事情,您需要一个代表管理员帐户或具有管理员权限的帐户的 token 。
关于c++ - 为在非管理员用户帐户中运行的进程创建防火墙规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5686273/