C++ 为在非管理员用户帐户中运行的进程创建防火墙规则

C++ 为在非管理员用户帐户中运行的进程创建防火墙规则,c++,windows,security,firewall,non-admin,C++,Windows,Security,Firewall,Non Admin,我有一个基本要求——在系统提示时,通过创建防火墙规则,在Windows上顺利运行我的应用程序,即打开Windows防火墙 当我第一次运行我的应用程序时,当我以管理员权限登录到我的系统时,防火墙会出现一个提示,我通知它允许我的应用程序并创建一个规则,很好 但是,当我打开电脑,以非管理员用户身份登录并运行应用程序时,防火墙会按预期显示提示;但是,当我单击与管理员用户相同的选项时,防火墙提示会不断弹出,即使每次出现提示时我都单击了允许/确定。只有当我单击“取消/阻止”应用程序运行时,提示才会消失,这显

我有一个基本要求——在系统提示时,通过创建防火墙规则,在Windows上顺利运行我的应用程序,即打开Windows防火墙

当我第一次运行我的应用程序时,当我以管理员权限登录到我的系统时,防火墙会出现一个提示,我通知它允许我的应用程序并创建一个规则,很好

但是,当我打开电脑,以非管理员用户身份登录并运行应用程序时,防火墙会按预期显示提示;但是,当我单击与管理员用户相同的选项时,防火墙提示会不断弹出,即使每次出现提示时我都单击了允许/确定。只有当我单击“取消/阻止”应用程序运行时,提示才会消失,这显然不是我想要做的

因此,这里有一个百万美元的问题,第一次单击防火墙提示允许我的应用程序运行时,我应该如何通过成功创建防火墙规则来更改我的应用程序代码以使其顺利运行;与以具有管理员权限的用户身份运行应用程序时的工作方式完全相同

我已经在网上做了一点搜索,并且逐渐了解到非管理员用户不能修改防火墙规则(甚至不能创建它们??)。顺便说一句,我在WindowsXP、Vista 7以及x86和x64上测试了这个场景,结果相同

如果有人遇到和/或解决了类似问题,请分享您的知识。如果我错过了什么,请让我明白我错过了什么


谢谢

我不认为你在一个
非管理员
账户中尝试什么是可能的。您可以尝试通过创建一个新进程来使用windows
runas
功能来获得
admin
权限,以便提示用户输入admin帐户的
用户名
密码
,这将为您的程序提供创建防火墙规则所需的访问权限


您还可以查看或。基本上,为了成功完成您正在尝试的操作,您需要一个代表管理员帐户或具有管理员权限的帐户的令牌。

谢谢。我实际上正在呼叫CreateProcessAsUser,但仍然存在此问题。我将使用这些标志/参数,看看它是如何工作的。我认为我不能在我的场景中使用LogOnUser。