Здравствуйте господа !
  Хотел бы поинтересоваться у знающих людей как правильно зарегистрировать компонент XPCOM в LINUX-е ?
  Написнный на С++ скомпиленный и вроде как работающий но вот при вызове из JavaScript выдает ошибку о ненахождении класса компонента .
   ВЫЗЫВАЕТСЯ ТАК
   try
    {
        // По Contract ID получаем доступ к модулю
        const cid = "@mydomain.com/XPCOMSample/MyComponent;1";
        obj = Components.classes[cid].createInstance();
         
       
        // Получаем указатель на объект нашего интерфейса
        obj = obj.QueryInterface(Components.interfaces.IMyComponent);
    }
    catch(err)
    {
         
      alert(err);
        return;
    }
                    РУГАЕТСЯ ТАК :   
                                    Error: Permission denied to get property XPCComponents.classes   ????!
                 
              То есть запускается catch(err)

Возможно, методы компонента вызываются из непривилегированной страницы ?

Я предпологаю что компанент не зарегистрирован просто .
Господа как зарегистрировать компанент состаящий из file.xpt  и file.so ?

alex171069, я прежде чем предположить о непривилегированности кода проверил несколько кусочков кода.
Если фабрика класса незарегистрирована, а вызывающий код имеет нужные привилегии, то сообщение об ошибке имеет вид "Error: Components.classes['@abc;1'] is undefined"

В случае непривилегированного вызывающего кода (javascript:... в адресной строке), независимо от того, зарегистрирована компонента, или нет, имеем "Permission denied...".

Хотя, возможно что для написанной на C++ необходимо определять интерфейс nsISecurityCheckedComponent (см. http://weblogs.mozillazine.org/weirdal/archives/017211.html).
Но мне кажется, что это лишнее.

Ну и, на всякий случай: компонента в idl объявлена скриптабельной ?

nsISecurityCheckedComponent нужен в том случае, если мы хотим вызывать методы этого компонента из непривилегированного кода. К задаче получения указателя на компонент этот интерфейс никак не относится.

В этой строке obj получает 0 ....!
obj = Components.classes[cid].createInstance()
   
   Тогда вопрос- Components.classes с чем связан и где искать ошибку которая связана с этим интерфейсом ?