我是发展一个应用程序

我是发展一个应用程序

我是发展一个应用程序

我是一名程序员(但通常不从事 Windows 桌面或服务)。我正在编写一个应用程序。我想私下分发此应用程序(不通过 Windows 应用商店)。

我想避免 Windows Defender 提示

目前,当有人第一次运行我的应用程序时,他们会看到这样的内容:

Windows Defender 防火墙已阻止此应用的某些功能

Windows Defender 防火墙已在所有公共和私有网络上阻止了 XXXX 的某些功能

允许 XXXX 在这些网络上通信:

[ ] 私人网络,例如我的家庭或工作网络

[ ] 公共网络,例如机场和咖啡店中的网络(不推荐,因为这些网络通常安全性很差或根本没有安全性)

为什么?用户体验

这个对话让人困惑。. 这肯定会让工业的正在将其部署给其环境中的技术人员的客户。

我认为有一个更好的解决方案,而不是告诉他们需要进行特殊培训或让用户观看视频或在机器旁边贴上一个大标志,上面写着“单击这些复选框和此按钮”。

除此之外,它还会降低人们对该应用程序的信任度。它看起来是二流的,低劣的。

SignTool 与应用程序清单与......?

我很乐意为开发者账户付费。我很乐意嵌入清单文件。我很乐意做让这个应用“合法”所需的一切。

我只是想知道什么我需要这样做,以便应用程序被识别为真实的、正版的、非恶意软件的应用程序,并且能够监听预定义(最好)或动态(如果需要)的 TCP 端口,而不会弹出这个令人讨厌的提示。

我们能做什么?

我如何“合法化”我的应用程序,以便可以信任它并监听 TCP 端口?

我希望要么我改变监听网络的方式,要么用某些选项对应用程序进行签名,要么提供清单文件,要么提供用于特权访问的清单文件,然后编辑注册表项该应用程序尝试监听 TCP 套接字。

更新:给自己(和他人)的备注(不完整)

  1. 对内核驱动程序和已验证的应用程序使用代码签名证书
  2. 使用 Windows 应用商店的 Windows 开发者帐户
  3. 为提升的权限创建应用程序清单
  4. 创建安装程序

答案1

这通常被称为 Windows 防火墙。如果您搜索 Windows 防火墙,可能会有所帮助没有后卫资格。

一般来说,操纵防火墙是一种不好的行为:这是一个应该由用户或管理员控制的区域。但是,您确实有几种选择。

当尝试侦听非环回接口且没有匹配的现有规则(允许或拒绝)时,会出现防火墙提示。这意味着任何匹配可执行路径(默认,即接受提示后添加的路径)、端口号甚至全局的规则。

  • 如果您不需要接受来自其他机器的连接,请仅在本地主机上监听。这不会导致出现防火墙提示。您目前可能默认监听所有接口。
  • 如果你正在使用 WiX 或者 WiX 派生的(例如WixSharp)安装程序,您可以使用防火墙扩展在安装时为自己添加例外。其他安装程序工具包可能提供类似的选项。
  • 您可以通过编程方式添加异常Windows 防火墙 API(可能需要管理员权限)。
  • 你可以调用 netsh 命令(可能需要管理员权限)。

安装时选项通常是最好的,因为大多数安装程序工具包也会在卸载时将其干净地删除。

最后,但并非最不重要的一点是,如果是针对特定客户,那么这确实会成为管理问题。因此,最正确的操作可能是使用组策略在所有计算机上添加防火墙规则,或者,如果没有使用 Active Directory,则准备系统映像以默认包含防火墙规则。

相关内容