Plugins FireBreath:CreateProcess()-->;在NPObject上调用方法时出错

Plugins FireBreath:CreateProcess()-->;在NPObject上调用方法时出错,plugins,npapi,createprocess,firebreath,Plugins,Npapi,Createprocess,Firebreath,我试图从FireBreath插件中启动notepad.exe,但当我调用相应的API函数(这次“echo”仅用于测试)时,它会在FireFox中的“错误调用NPObject上的方法!”崩溃 这是我的密码: FB::variant redtestAPI::echo(const FB::variant& msg) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.

我试图从FireBreath插件中启动notepad.exe,但当我调用相应的API函数(这次“echo”仅用于测试)时,它会在FireFox中的“错误调用NPObject上的方法!”崩溃

这是我的密码:

FB::variant redtestAPI::echo(const FB::variant& msg) 
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;

  ZeroMemory( &si, sizeof(si) );
  si.cb = sizeof(si);
  ZeroMemory( &pi, sizeof(pi) );

  // Start the child process. 
  if( !CreateProcess( NULL,   // No module name (use command line)
    L"notepad.exe",        // Filename
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi )           // Pointer to PROCESS_INFORMATION structure
  ) {
    return "error";
  }

  return "foo";
}
我做错了什么?我找到了一些有关此错误消息(->System.security.allowDomain)的Flash安全解决方案,但FireBreath没有。我做错了什么

提前谢谢


heinob

FireBreath本身对帮助或阻止CreateProcess运行没有任何作用;它是真的崩溃了还是只是抛出了一个javascript异常?如果插件真的崩溃了,那么您的呼叫就崩溃了,否则它可能是一个未捕获的异常


这里没有你需要知道的FireBreath的具体情况;只需附加一个调试器,设置一个断点,然后逐步查看发生了什么。

对不起,我使用的当然是“CreateProcess”而不是“CreateProcessAsUser”。这是打字错误。请忽略“AsUser”,你是对的!我通过使用ShellExecute(NULL,NULL,L“notepad.exe”,L“”,NULL,SW_SHOW)解决了这个问题取而代之。