正在删除控制台应用程序。为什么要删除?

Something is deleting a console app. Why is it being deleted?

我需要学习如何在 C# 程序中使用 SMO,所以我做的第一件事就是启动一个新的控制台应用程序,然后开始进行基础操作。我决定让应用程序接受参数,这样我就可以传递用户名、登录名等信息。在我处理和构建它时,我打开了一个 PowerShell window,我可以在其中调用应用程序,为其提供参数或不,等等。但是我不明白的是发生了一些奇怪的事情。有时,当我 运行 PowerShell window 中的应用程序时,它会出于某种原因被删除。为什么要这样做?当它第一次给我以下错误消息时我发现了它:

Program 'SmoListLogins.exe' failed to run: The system cannot find the file specifiedAt line:1 char:1 + .\SmoListLogins.exe "MYCOMPANY\Rod"

我的 SmoListLogins.exe 程序不存在。当然我可以很容易地重新创建它,但我不明白为什么它被删除了。

所以你可以看到我在做什么,这是源代码。我从 MSDN 文章中获取并添加了一点:

using System;
using System.Data;
using Microsoft.SqlServer.Management.Smo;
namespace SmoListLogins
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                var userName = args[0];
                ListLogins(userName);
            }
            else
            {
                ListLogins();
            }
        }
        static private void ListLogins(string userName = "")
        {
            var userNamePassed = (userName != "");
            Server srv = new Server("YOURSQLINSTANCE");
            //Iterate through each database and display.   
            foreach (Database db in srv.Databases)
            {
                Console.WriteLine("========");
                Console.WriteLine("Login Mappings for the database: " + db.Name);
                Console.WriteLine(" ");
                //Run the EnumLoginMappings method and return details of database user-login mappings to a DataTable object variable.   
                DataTable d;
                try
                {
                    d = db.EnumLoginMappings();
                    //Display the mapping information.   
                    foreach (DataRow r in d.Rows)
                    {
                        var userNameMatches = false;
                        var starting = true;
                        foreach (DataColumn c in r.Table.Columns)
                        {
                            if (!userNamePassed)
                            {
                                Console.WriteLine(c.ColumnName + " = " + r[c]);
                            }
                            else
                            {
                                if (starting)
                                {
                                    starting = false;
                                    if (userName == r[c].ToString())
                                    {
                                        userNameMatches = true;
                                    }
                                }
                                if (userNameMatches)
                                {
                                    Console.WriteLine(c.ColumnName + " = " + r[c]);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error processing database: {db.Name}");
                    Console.WriteLine($"Error: {ex.Message}");
                    Console.WriteLine();
                }
            }
        }
    }
}

我相信我现在知道是什么删除了我的可执行文件。这不是我想到的,所以我与大家分享答案。今天我收到一封来自我们首席安全官的电子邮件,通知我我编写的程序被 Symantec Endpoint Protection 阻止了。在我的测试中,我会一遍又一遍地 运行 我的应用程序。经过几次迭代后,它就会消失。我没有想到可能是我们公司的 AV 正在做这件事。现在看来,这正是发生的事情。

感谢大家的意见,试图帮助我解决这个问题。我希望如果其他人遇到这个问题,他们可能会认为他们的 AV 可能是他们编写的应用程序消失的原因。