none
Ошибка при програмном сохрании документа в Word RRS feed

  • Вопрос

  • Переодически на некоторых компьютерах возникает следующая ошибка:

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException: Метод или свойство Open недоступны, потому что разрешение на работу с данным документом ограничено.

       --- End of inner exception stack trace ---

       at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)

       at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)

    при попытке вызова следующих строчек

    app = GetObject("Word.Application", out created);

    documents = GetPropertyValue(app, "Documents");

    Type type = documents.GetType();

    return type.InvokeMember( “Open” , BindingFlags.GetProperty, null, obj, new object[0]);

    Не подскажете в чем проблема?

    26 апреля 2012 г. 10:38

Ответы

Все ответы

  • Ну наколько видно из ошибки "Метод или свойство Open недоступны, потому что разрешение на работу с данным документом ограничено." у пользователя от имени которого запускается или выполняется программа нет должных привелегий. Скорее всего нужно запустить её от имени пользователя с нужными привилегиями.

    26 апреля 2012 г. 11:17
    Модератор
  • У одно и того же пользователя бывает нормально работает, а бывает с ошибками. Например один из случаев возникновения ошибки, когда открыто много документов Word уже. Иногда помогает перезагрузку. Как тут могут быть завязаны привелегия?

    26 апреля 2012 г. 11:27
  • Ну если так, тогда значит не в привилегиях дело. А может Вы их дважды пытаетесь открыть?

    26 апреля 2012 г. 11:40
    Модератор
  • сомневаюсь, провел исследование ( так как я сам разбираюсь в этом коде, он достался от других разработчиков) ситуация следующая. Формируется файл .tmp в "С:\User\<User>\AppData\Temp" затем его из C# открываю, и как раз на методе Open выдается исключение. попробовал убрать права на файл, выдается уже другая ошибка связанная с доступом. Если ли какой-то регулятор привелегий на доступ к методам офиса?


    Сам не могу воспроизвести ошибку
    26 апреля 2012 г. 12:08
  • Вот и вот, посмотрите на эти ссылки,  думаю будут полезными.
    • Предложено в качестве ответа Abolmasov Dmitry 26 апреля 2012 г. 12:48
    • Отменено предложение в качестве ответа Anton Paramonov 26 апреля 2012 г. 12:56
    • Помечено в качестве ответа Abolmasov Dmitry 3 мая 2012 г. 9:59
    26 апреля 2012 г. 12:32
    Модератор
  • Не забудьте отметить ответ, если он решит вашу проблему.

    Спасибо.


    Для связи [mail]

    26 апреля 2012 г. 12:48
  • Спасибо Yatajga! ОЧень интересная статья, уже реализую решение, но ответить смогу лишь после того как у клиентов попробуем. Так как я не могу воспроизвести ошибку.
    26 апреля 2012 г. 12:57