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;
}

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы