Я попытаюсь объяснить вам статическую вещь. Прежде всего статические переменные не принадлежат ни одному конкретному экземпляру класса. Они распознаются с именем класса. Статические методы снова не относятся к какому-либо конкретному экземпляру. Они могут получить доступ только к статическим переменным. Представьте, что вы вызываете MyClass.myMethod (), а myMethod - это статический метод. Если вы используете нестатические переменные внутри метода, как, черт возьми, он знает, какие переменные использовать? Вот почему вы можете использовать из статических методов только статические переменные. Повторяю, они НЕ принадлежат ни одному конкретному экземпляру.
У меня была такая же ошибка, когда я развернул свое приложение. У меня есть решение с этого сайта: Компонент с CLSID XXX не удалось из-за следующей ошибки: 80070005 Доступ запрещен
Вот это решение:
* Я использовал проверку подлинности форм.
Это помогло мне: (решение из форума msdn )
goto Controlpanel -> Административные средства -> Службы компонентов -> компьютеры -> myComputer -> DCOM Config -> Приложение Microsoft Excel.
щелкните правой кнопкой мыши, чтобы получить диалог свойств. Goto Security и соответствующим образом настроить разрешения.
blockquote>В разрешениях запуска и приложения выберите «Настроить», «Изменить». Добавьте пользователя / группу, вызывающую приложение.
Для IIS 8 я сделал в основном то же самое, что и Monic. Im запускает мое приложение как собственный пул приложений на машине x64. 1. В DCOMCNFG щелкните правой кнопкой мыши Мой компьютер и выберите свойства.
2.Выберите вкладку «СОМ-ценные бумаги».
3. В разрешениях доступа нажмите «Изменить значения по умолчанию» и добавьте iis apppool \ myapp к нему и дайте ему Разрешить разрешение на локальное подключение. Сделайте то же самое для iis apppool \ myapp
4. В разрешениях запуска и активации нажмите «Изменить значения по умолчанию» и добавьте iis apppool \ myapp к нему и дайте ему разрешение «Локальный запуск» и «Локальная активация». Сделайте то же самое для iis apppool \ myapp.
дополнительно мне пришлось сделать папки, выделенные в C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop, и дать права на чтение \ запись для iis apppool \ myapp также
В случае, если это помогает кому-то:
Я запускаю 64-разрядную версию Windows 7, и мне захотелось зарегистрировать 32-разрядную dll.
Сначала я попытался: regsvr32 и получил следующую ошибку:
System.Runtime.InteropServices.COMException (0x80040154): получение фабрики COM-класса для компонента с CLSID {A1D59B81-C868- 4F66-B58F-AC94A4A7982E} не удалось из-за следующей ошибки: 80040154.
Затем я попытался добавить приложение через Службы компонентов (Run-> DCCOMCNFG) ( http: //www.justskins .com / forums / difference-registering-dll-using-regsvr32-and-component-services-17280.html ) и получил следующую ошибку:
System.UnauthorizedAccessException: получение класса COM фабрика для компонента с CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} потерпела неудачу из-за следующей ошибки: 80070005.
Существует много ссылок на решение проблемы, но то, что сработало для меня, было: Console Root -> Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM + -> -> Свойства: вкладка «Безопасность»: авторизация: снимите флажок «Использовать проверки доступа для этого приложения».
Я не знаю, что он делает.
Я могу понять вашу боль. В моем случае ошибка была решена путем выполнения следующих шагов:
Надеюсь, это поможет.
Вы также получите эту ошибку, если в системе есть устаревшие процессы EXCEL.EXE
(используйте [вкладку Task Manager --> Processes
».)
Убейте все эти экземпляры, и приложение будет работать нормально.
Вы указываете CLSID для Microsoft.Office.Interop.Excel.ApplicationClass. Этот класс в основном запускает excel.exe через InprocServer32. Если вы его не установили, он вернет сообщение об ошибке, которое вы получили выше.
C:\Windows\SysWOW64\config\systemprofile\Desktop
bingo !!!
– dotjoe
13 September 2011 в 15:41