static void WarnIfPublicAccess(MessageQueue queue)
{
MessageQueueAccessRights? everyoneRights, anonymousRights;
try
{
queue.TryGetPermissions(LocalAnonymousLogonName, out anonymousRights);
queue.TryGetPermissions(LocalEveryoneGroupName, out everyoneRights);
}
catch (SecurityException se)
{
Logger.Warn($"Unable to read permissions for queue [{queue.QueueName}]. Make sure you have administrative access on the target machine", se);
return;
}
if (anonymousRights.HasValue || everyoneRights.HasValue)
{
var logMessage = $"Queue [{queue.QueueName}] is running with [{LocalEveryoneGroupName}] and/or [{LocalAnonymousLogonName}] permissions. Consider setting appropriate permissions, if required by the organization. For more information, consult the documentation.";
if (Debugger.IsAttached)
{
Logger.Info(logMessage);
}
else
{
Logger.Warn(logMessage);
}
}
}