【发布时间】:2013-06-19 01:05:32
【问题描述】:
我正在编写一个 C++ DLL 来连接到 MySQL 数据库。除其他外,它尝试向 Windows 防火墙列表添加一个例外,以便它可以通过 TCP(端口 3306)连接到远程 MySQL 服务器。当我尝试添加端口时,我得到一个 HRESULT 或 E_ACCESSDENIED,除非我以管理员身份运行该程序。
我想提示用户输入管理员密码,但前提是端口不在例外列表中。这意味着我不能只创建一个UAC manifest,因为据我所知,设置level="requireAdministrator" 总是会提示输入管理员密码。我可以有条件地调出管理员提示符吗?
【问题讨论】:
-
您应该在安装过程中处理这个问题,而不是程序本身。
-
@Wug 我只是在写一个 DLL,而不是一个完整的可执行文件,所以没有安装程序。
-
也许应该有一个。这个 dll 会作为另一个程序的一部分安装吗?该程序可能会运行安装程序,并且可能需要管理权限。你可以在你的 DLL 中添加一个函数来执行防火墙设置并从应用程序安装程序中点击它。
-
@1" 那么正确的做法是让你的 DLL 的用户处理这个问题。这不应该是你的问题。否则,你可以将你的程序一分为二:没有清单的 DLL,和
.exe带有一个清单,您的 DLL 仅在需要时运行。 -
你写这个DLL是为了什么?你的市场/目标/观众是谁?
标签: c++ windows uac windows-firewall