Быстрое решение было бы расширить нижний колонтитул страницы:
...
printer.Footer = GetSignatureFooter("Company name LTD", "Thank you for your purchase");
printer.FooterSpacing = 15;
printer.PrintDataGridView(dgvmonths);
И метод получения нижнего колонтитула с подписью:
private string GetSignatureFooter(string companyName, string additonalMessage)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Signature: ".PadRight(60, '_'));
sb.AppendLine();
sb.AppendLine(additonalMessage);
sb.AppendLine();
sb.AppendLine(companyName);
return sb.ToString();
}
Самый простой способ - просто сделать это (например, попытаться прочитать файл, например). Как упоминал Джаред, нет способа убедиться, что вы сможете читать в будущем (сбой сети, изменение разрешений и т. Д.).
Что касается кода, вы можете использовать DirectoryInfo class для некоторых попыток ответа:
string remotePath = @"\\server\share$";
bool haveAccess = false;
DirectoryInfo di = new DirectoryInfo(remotePath);
if (di.Exists)
{
try
{
// you could also call GetDirectories or GetFiles
// to test them individually
// this will throw an exception if you don't have
// rights to the directory, though
var acl = di.GetAccessControl();
haveAccess = true;
}
catch (UnauthorizedAccessException uae)
{
if (uae.Message.Contains("read-only"))
{
// seems like it is just read-only
haveAccess = true;
}
// no access, sorry
// do something else...
}
}
В приведенном выше коде есть много недостатков (например, жестко закодированный тест «только для чтения»), но это всего лишь пример, используемый для иллюстрации того, что вы можете сделать. В DirectoryInfo есть несколько других вспомогательных методов, которые вы можете использовать для отображения файлов в папке. Если у вас нет доступа, Методы выдают исключение UnauthorizedAccessException
, которое можно использовать для проверки причины сбоя доступа. Ознакомьтесь с информацией о GetAccessControl для получения дополнительной информации об исключениях, которые он генерирует.
Самый надежный способ определения того, имели ли вы разрешение на чтение с поделиться с
К сожалению, хотя на основании вашего описания вы пытаетесь определить, будет ли у вас разрешение на чтение для публикации. Нет надежного способа определить это.
Независимо от того, сколько ACL, каталогов и т. Д. Вы смотрите на момент, когда вы закончите, просматривая их, вы можете потерять доступ к общему ресурсу с помощью любого количества механизмов. Наиболее очевидным является снижение доли сети. Все, что вы можете определить, это то, что вы имели разрешение на общий ресурс.