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

时间:2017-03-24 17:43:45

标签: c# powershell smo

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

  

程序'SmoListLogins.exe'无法运行:系统找不到指定的文件行:1个字符: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();
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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