0

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

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

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

什么会导致它在管理员下工作但在系统下失败,我怎样才能让它在系统下运行时工作?

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();
}
4

0 回答 0