Word. Запароленные документы - C#
Формулировка задачи:
Здравствуйте.
При попытке открытия запароленного документа, приложение Word становится видимым и предлагает пользователю самому ввести его.
При просмотре параметров Documents.Open есть параметр пароля, но пароля я не знаю и знать не могу.
Как можно обойти такой документ изначально, чтобы Word не спрашивал пользователя?
Можно ли изначально проверить, запаролен ли документ и пропустить его? Заранее спасибо.
Решение задачи: «Word. Запароленные документы»
textual
Листинг программы
public static Boolean IsProtected(String file)
{
Byte[] bytes = File.ReadAllBytes(file);
String prefix = Encoding.Default.GetString(bytes.Take(2).ToArray());
// Zip and not password protected.
if (prefix == "PK")
return false;
// Office format.
if (prefix == "ГђГЏ")
{
// XLS 2003
if (bytes.Skip(0x208).Take(1).ToArray()[0] == 0xFE)
return true;
// XLS 2005
if (bytes.Skip(0x214).Take(1).ToArray()[0] == 0x2F)
return true;
// DOC 2005
if (bytes.Skip(0x20B).Take(1).ToArray()[0] == 0x13)
return true;
// Guessing
if (bytes.Length < 2000)
return false;
// DOC/XLS 2007+
String start = Encoding.Default.GetString(bytes.Take(2000).ToArray()).Replace("\0", " ");
if (start.Contains("E n c r y p t e d P a c k a g e"))
return true;
return false;
}
// Unknown format.
return false;
}