正在删除控制台应用程序。为什么要删除?
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 可能是他们编写的应用程序消失的原因。
我需要学习如何在 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 可能是他们编写的应用程序消失的原因。