调用COM服务器在管理员帐户下成功,但在SYSTEM帐户下失败

时间:2013-04-10 18:26:17

标签: windows com

我正在尝试从COM服务器(实际上是Motorola MeshAPI)查询某些数据,但无法初始化。使用下面的代码片段,我在管理员的命令行上运行时获得成功的数据,但使用此代码的实际程序在SYSTEM帐户下作为服务运行。使用“psexec -i -s cmd.exe”我在SYSTEM帐户下运行了代码片段,我得到了与服务相同的错误。

CreateInstance()调用失败,错误消息“服务器执行失败”,错误代码2148007941(0x80080005)。 在Windows事件查看器下的系统窗格中,我看到源“DCOM”,事件ID 10010和描述“服务器{.... GUID}未在所需超时内向DCOM注册的错误。”

我已经尝试了这个答案的提示https://stackoverflow.com/a/1157331,但我没有找到任何有助于解决这个问题。

什么会导致它在Administrator下工作但在SYSTEM下失败?如何在SYSTEM下运行时让它工作?

HRESULT hr=S_OK;
USHORT nLinkResistance;
if (!m_MeshNetInitialised)
{
    hr = m_pApiCardInterface.CreateInstance("MeshAPI.MeshNet");// mea interface smart pointer 
    if (SUCCEEDED(hr))
    {
        Sleep(1000);
        m_MeshNetInitialised = true;
    }
}
if (m_MeshNetInitialised)
{
    hr = m_pApiCardInterface->GetIAPLinkResistance(&nLinkResistance);   
    if( SUCCEEDED(hr) )
    {
        l_retval = nLinkResistance;
    }
    else
    {
        std::wcout << L"Error getting IAPLinkResistance" << std::endl;
    }
}
if (FAILED(hr))
{
    _com_error err(hr);
    std::wcout << err.ErrorMessage();
}

0 个答案:

没有答案