停止将我的应用程序检测为病毒

3
我制作了一个应用程序,当你运行它时,会将.exe文件放在启动项中。以下是相关代码:

RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

rkApp.SetValue("smartAppointment", Application.ExecutablePath.ToString());

我将为应用程序创建一个注册表,以便它可以随Windows启动,但是有一个问题,一些杀毒软件会将我的应用程序检测为病毒。

我该如何停止杀毒软件将我的应用程序检测为病毒?

4个回答

6
我认为任何一种自动尝试在启动时运行应用程序的方式都会被任何反病毒系统标记为病毒行为。在你的解决方案安装时,只需告诉用户批准更改即可。除非(当然)你试图编写一个病毒。在这种情况下,请停止。

不是病毒,而是一个预约应用程序。该应用程序将随Windows启动,并宣布您的预约。 - AnDr3yy
正如其他人所说,您的应用程序需要数字签名才能以“正确”的方式执行此操作。如果您首先切换到管理员身份,您可能会更加幸运(如果用户未作为管理员运行,则会弹出警告)。 - Hogan

1

你的应用程序是否数字签名了?如果没有,你应该尝试签署你的应用程序(你需要一个公共证书,但这需要花费一些钱)

应用程序签名/验证


0

如果您需要在启动时运行,通常首选的方法是将其作为Windows服务运行。

如果您还需要GUI,则应该有一个GUI与托管应用程序的Windows服务进行通信。


但是你仍然需要通过注册表启动GUI部分,可能需要一些方式来实现吧? - svick
通常首选的方法是将其作为Windows服务运行。这并不正确:不需要与用户交互的后台服务->服务,GUI程序如果没有用户登录或必须在用户帐户下运行(或者可以在多个会话中多次运行,比如终端服务器)->自动运行。 - Jürgen Steinblock
实际上,你的说法并不正确。在*nix领域中,这种情况非常普遍,而Windows在这种任务方面也没有太大的区别。用户表示他们需要一个可以提醒人们事件的服务。为什么要一直运行完整的GUI来做这个?你不会这样做。这是Windows服务的典型例子。您需要一个GUI来管理他想要通知的事情,但通知本身以及调度和定时等等都非常适合作为服务。这是远程和WCF的用途之一。 - Chad Ruppert

0
通常情况下,您的安装程序(MSI)会设置“在启动时启动应用程序”的注册表设置,但我认为,如果您的应用程序使用数字签名进行了身份验证,则此问题将消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接