{"id":752,"date":"2015-04-19T23:35:55","date_gmt":"2015-04-19T14:35:55","guid":{"rendered":"http:\/\/dev.activebasic.com\/egtra\/?p=752"},"modified":"2016-01-24T03:03:43","modified_gmt":"2016-01-23T18:03:43","slug":"%e4%bf%9d%e8%ad%b7%e3%83%a2%e3%83%bc%e3%83%89%ce%b1%e3%81%aa%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e3%82%92cocreateinstance%e3%81%a7%e4%bd%9c%e3%82%8b%ef%bc%88%e3%81%9d%e3%81%ae1%ef%bc%89","status":"publish","type":"post","link":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/","title":{"rendered":"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09"},"content":{"rendered":"<p>\u524d\u56de\uff08<a href=\"\/egtra\/2015\/04\/06\/750\/\">\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306e\u30d7\u30ed\u30bb\u30b9\u4e0a\u3067\u52d5\u4f5c\u3059\u308bCOM\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308b<\/a>\uff09\u3067\u306f\u3001CreateProcessAsUser\u3092\u4f7f\u3044\u307e\u3057\u305f\u3002\u4eca\u56de\u306fCoCreateInstance\u3084CoGetClassObject\u3067\u540c\u3058\u3088\u3046\u306b\u5236\u9650\u306e\u3042\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n<hr \/>\n<p>CoCreateInstance\u3084CoGetClassObject\u3067\u306f\u3001\u6307\u5b9a\u3057\u305f\u30af\u30e9\u30b9\u304c\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u305f\u5834\u5408\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30d7\u30ed\u30bb\u30b9\u304c\u4f5c\u3089\u308c\u307e\u3059\u3002\u7279\u306b\u6307\u5b9a\u304c\u306a\u3051\u308c\u3070\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30bb\u30b9\u306e\u30c8\u30fc\u30af\u30f3\u306f\u3001CreateProcess\u306e\u3088\u3046\u306b\u547c\u3073\u51fa\u3057\u5143\u306e\u3082\u306e\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30e6\u30fc\u30b6\u30fc\u3092\u6307\u5b9a\u3059\u308b\u65b9\u6cd5\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u304c\u3001\u4eca\u56de\u306f\u547c\u3073\u51fa\u3057\u5143\u3067\u7528\u610f\u3057\u305f\u4efb\u610f\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u3063\u3066\u304f\u308c\u308b\u65b9\u6cd5\u3092\u63a2\u3057\u51fa\u3057\u307e\u3057\u305f\u3002\u8a66\u3057\u305f\u7d50\u679c\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3059\u308c\u3070\u826f\u3044\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n<ul>\n<li>EOAC_STATIC_CLOAKING\u307e\u305f\u306fCLSCTX_ENABLE_CLOAKING\u3092\u4f7f\u7528\u3059\u308b\uff08MSDN\u30e9\u30a4\u30d6\u30e9\u30ea: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/ms683778.aspx\">Cloaking<\/a>\uff09\u3002<\/li>\n<li>ImpersonateLoggedOnUser\u304b\u4f55\u304b\u3067\u30c8\u30fc\u30af\u30f3\u3092\u507d\u88c5\u3057\u3066\u304a\u304f\u3002<\/li>\n<\/ul>\n<p>ImpersonateLoggedOnUser\u3067\u6307\u5b9a\u3059\u308b\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306f\u3001\u524d\u3005\u56de\uff08<a href=\"\/egtra\/2015\/03\/30\/748\/\">\u4fdd\u8b77\u30e2\u30fc\u30c9\u3088\u308a\u3082\u3046\u5c11\u3057\u3060\u3051\u5236\u9650\u306e\u5f37\u3044\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b<\/a>\uff09\u307e\u3067\u3068\u540c\u3058\u3082\u306e\u3067\u3059\u3002<\/p>\n<blockquote>\n<ul>\n<li>Integrity Level\u3092\u4f4e\u306b\u3059\u308b<\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/aa446583.aspx\">CreateRestrictedToken<\/a>\u306eDISABLE_MAX_PRIVILEGE | LUA_TOKEN\u3067\u5236\u9650\u4ed8\u304d\u306e\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u308b<\/li>\n<\/ul>\n<\/blockquote>\n<p>\u307e\u305a\u306fEOAC_STATIC_CLOAKING\u3067\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u307f\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/ms693736.aspx\">CoInitializeSecurity<\/a>\u306e\u5b9f\u5f15\u6570\u306b\u4f7f\u3044\u307e\u3059\u3002<\/p>\n<p>COM\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u30b5\u30fc\u30d0\u88fd\u4f5c\u306e\u5229\u4fbf\u6027\u306e\u305f\u3081\u3001C++\/CLI\u304b\u3089ATL\u4f7f\u7528\u306eC++\u306b\u5909\u3048\u307e\u3057\u305f\u3002\u3053\u306e\u5b9f\u88c5\u30af\u30e9\u30b9Hoge\u306f\u4ee5\u524d\u306e\u8a18\u4e8b<a href=\"\/egtra\/2014\/12\/20\/719\/\">OBJREF\u30e2\u30cb\u30ab\u30fc<\/a>\u3092\u5143\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre lang=\"cpp\">\r\n\/\/ cl factory.cpp \/link \/SUBSYSTEM:Console,5.01\r\n#define UNICODE\r\n#define _UNICODE\r\n#define WIN32_LEAN_AND_MEAN\r\n#define _ATL_NO_AUTOMATIC_NAMESPACE\r\n#define _ATL_XP_TARGETING\r\n\r\n#include <sstream>\r\n#include <windows.h>\r\n#include <atlbase.h>\r\n#include <atlcom.h>\r\n\r\n\/\/ {DCC853C7-52FD-446E-8BFC-6662D97FD935}\r\nextern const GUID CLSID_Hoge =\r\n{ 0xdcc853c7, 0x52fd, 0x446e,\r\n{ 0x8b, 0xfc, 0x66, 0x62, 0xd9, 0x7f, 0xd9, 0x35 } };\r\n\r\nclass Module : public ATL::CAtlExeModuleT<Module>\r\n{\r\npublic:\r\n  Module() { m_bDelayShutdown = false; }\r\n};\r\n\r\nModule module;\r\n\r\nclass ATL_NO_VTABLE Hoge\r\n  : public ATL::CComObjectRootEx<ATL::CComMultiThreadModel>\r\n  , public ATL::CComCoClass<Hoge, &#038;CLSID_Hoge>\r\n  , public IDispatch\r\n{\r\npublic:\r\n  BEGIN_COM_MAP(Hoge)\r\n    COM_INTERFACE_ENTRY(IDispatch)\r\n  END_COM_MAP()\r\n\r\n  DECLARE_NOT_AGGREGATABLE(Hoge)\r\n  DECLARE_NO_REGISTRY()\r\n\r\n  IFACEMETHOD(GetTypeInfoCount)(\r\n    __RPC__out UINT*) override\r\n  {\r\n    return E_NOTIMPL;\r\n  }\r\n\r\n  IFACEMETHOD(GetTypeInfo)(\r\n    UINT,\r\n    LCID,\r\n    __RPC__deref_out_opt ITypeInfo**) override\r\n  {\r\n    return E_NOTIMPL;\r\n  }\r\n\r\n  IFACEMETHOD(GetIDsOfNames)(\r\n    __RPC__in REFIID,\r\n    \/*__RPC__in_ecount_full(cNames)*\/ LPOLESTR*,\r\n    __RPC__in_range(0,16384) UINT,\r\n    LCID,\r\n    \/*__RPC__out_ecount_full(cNames)*\/ DISPID*) override\r\n  {\r\n    return E_NOTIMPL;\r\n  }\r\n\r\n  IFACEMETHOD(Invoke)(\r\n    _In_ DISPID dispIdMember,\r\n    _In_ REFIID riid,\r\n    _In_ LCID,\r\n    _In_ WORD flags,\r\n    _In_ DISPPARAMS *pDispParams,\r\n    _Out_opt_ VARIANT* pVarResult,\r\n    _Out_opt_ EXCEPINFO*,\r\n    _Out_opt_ UINT*) override\r\n  {\r\n    if (dispIdMember != DISPID_VALUE || flags != DISPATCH_METHOD)\r\n      return DISP_E_MEMBERNOTFOUND;\r\n    if (riid != IID_NULL)\r\n      return DISP_E_UNKNOWNINTERFACE;\r\n    if (pDispParams->cArgs != 0)\r\n      return DISP_E_BADPARAMCOUNT;\r\n    if (pDispParams->cNamedArgs != 0)\r\n      return DISP_E_NONAMEDARGS;\r\n\r\n    if (pVarResult == nullptr)\r\n      return S_FALSE;\r\n\r\n    VariantInit(pVarResult);\r\n    std::wostringstream os;\r\n    ATL::CHandle hThreadToken;\r\n    auto r = OpenThreadToken(\r\n      GetCurrentThread(), GENERIC_READ, FALSE, &hThreadToken.m_h);\r\n    auto e = GetLastError();\r\n    os << !!r << ' ' << (r ? 0 : e);\r\n    auto s = os.str();\r\n    pVarResult->vt = VT_BSTR;\r\n    pVarResult->bstrVal = SysAllocStringLen(\r\n      s.data(), static_cast<int>(s.size()));\r\n    return S_OK;\r\n  }\r\n};\r\n\r\nOBJECT_ENTRY_AUTO(CLSID_Hoge, Hoge)\r\n\r\nint WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int cmdShow)\r\n{\r\n  return module.WinMain(cmdShow);\r\n}\r\n<\/pre>\n<p>\u30ec\u30b8\u30b9\u30c8\u30ea\u3078\u306e\u767b\u9332\u304c\u5fc5\u8981\u306a\u306e\u3067\u3001reg\u30d5\u30a1\u30a4\u30eb\u3067\u4f5c\u308a\u307e\u3057\u305f\u3002<\/p>\n<pre>\r\nWindows Registry Editor Version 5.00\r\n\r\n[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\{DCC853C7-52FD-446E-8BFC-6662D97FD935}\\LocalServer32]\r\n@=\"C:\\\\Test\\\\hoge.exe\"\r\n<\/pre>\n<p>\u305d\u3057\u3066\u3084\u3063\u3068\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308b\u5074\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n<pre lang=\"cpp\">\r\n#define UNICODE\r\n#define _UNICODE\r\n#define WIN32_LEAN_AND_MEAN\r\n#define _ATL_NO_AUTOMATIC_NAMESPACE\r\n#define _ATL_XP_TARGETING\r\n\r\n#include <iostream>\r\n#include <windows.h>\r\n#include <VersionHelpers.h>\r\n#include <atlbase.h>\r\n#include <atlcom.h>\r\n#include <atlutil.h>\r\n#include <boost\/scope_exit.hpp>\r\n#include <boost\/implicit_cast.hpp>\r\n\r\n\/\/ {DCC853C7-52FD-446E-8BFC-6662D97FD935}\r\nstatic const GUID CLSID_Hoge =\r\n{ 0xdcc853c7, 0x52fd, 0x446e,\r\n{ 0x8b, 0xfc, 0x66, 0x62, 0xd9, 0x7f, 0xd9, 0x35 } };\r\n\r\nHRESULT OutputErrorMessgae(_In_ PCWSTR functionName, HRESULT hr)\r\n{\r\n  std::wclog << functionName << '\\n';\r\n  std::wclog << std::showbase << std::hex << hr << '\\n';\r\n  std::wclog << ATL::AtlGetErrorDescription(hr).GetString() << std::endl;\r\n  return hr;\r\n}\r\n\r\nHRESULT OutputLastError(_In_ PCWSTR functionName)\r\n{\r\n  auto hr = ATL::AtlHresultFromLastError();\r\n  OutputErrorMessgae(functionName, hr);\r\n  return hr;\r\n}\r\n\r\nHANDLE CreateProtectedToken()\r\n{\r\n  ATL::CHandle hOriginalToken, hToken;\r\n  if (!OpenProcessToken(GetCurrentProcess(),\r\n    TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE\r\n    | TOKEN_QUERY | TOKEN_ADJUST_DEFAULT,\r\n    &#038;hOriginalToken.m_h))\r\n  {\r\n    OutputLastError(L\"OpenProcessToken\");\r\n    return nullptr;\r\n  }\r\n  DWORD flags = DISABLE_MAX_PRIVILEGE;\r\n  if (IsWindowsVistaOrGreater())\r\n  {\r\n    flags |= LUA_TOKEN;\r\n  }\r\n  if (!CreateRestrictedToken(hOriginalToken, flags,\r\n    0, nullptr, 0, nullptr, 0, nullptr, &#038;hToken.m_h))\r\n  {\r\n    OutputLastError(L\"CreateRestrictedToken\");\r\n    return nullptr;\r\n  }\r\n  if (IsWindowsVistaOrGreater())\r\n  {\r\n    SID lowIL{\r\n      SID_REVISION,\r\n      1,\r\n      SECURITY_MANDATORY_LABEL_AUTHORITY,\r\n      SECURITY_MANDATORY_LOW_RID,\r\n    };\r\n    TOKEN_MANDATORY_LABEL tml{\r\n      {\r\n        &#038;lowIL,\r\n        SE_GROUP_INTEGRITY,\r\n      },\r\n    };\r\n    if (!SetTokenInformation(\r\n      hToken, TokenIntegrityLevel, &#038;tml, sizeof tml))\r\n    {\r\n      OutputLastError(L\"SetTokenInformation\");\r\n      return nullptr;\r\n    }\r\n  }\r\n  return hToken.Detach();\r\n}\r\n\r\nATL::CComPtr<IDispatch> CreateHoge()\r\n{\r\n  ATL::CHandle hToken(CreateProtectedToken());\r\n  if (!ImpersonateLoggedOnUser(hToken))\r\n  {\r\n    throw ATL::CAtlException(OutputLastError(L\"ImpersonateLoggedOnUser\"));\r\n  }\r\n  BOOST_SCOPE_EXIT_ALL(&hToken)\r\n  {\r\n    if (!RevertToSelf())\r\n    {\r\n      abort();\r\n    }\r\n  };\r\n  ATL::CComPtr<IDispatch> obj;\r\n#if 0 \/\/ 1\u306b\u3057\u3066\u3082\u52d5\u304d\u307e\u3059\u3002\r\n  ATL::CComPtr<IClassFactory> cf;\r\n  ATLENSURE_SUCCEEDED(\r\n    CoGetClassObject(CLSID_Hoge, CLSCTX_ALL, nullptr, IID_PPV_ARGS(&cf)));\r\n  ATLENSURE_SUCCEEDED(cf->CreateInstance(nullptr, IID_PPV_ARGS(&obj)));\r\n#else\r\n  ATLENSURE_SUCCEEDED(obj.CoCreateInstance(CLSID_Hoge));\r\n#endif\r\n  return obj;\r\n}\r\n\r\nint main()\r\n{\r\n  std::locale loc(std::locale::classic(), \"\", std::locale::ctype);\r\n  std::wclog.imbue(loc);\r\n  std::wcout.imbue(loc);\r\n  try\r\n  {\r\n    ATLENSURE_SUCCEEDED(CoInitializeEx(\r\n      nullptr, COINIT_MULTITHREADED | COINIT_DISABLE_OLE1DDE));\r\n    ATLENSURE_SUCCEEDED(CoInitializeSecurity(\r\n      nullptr, -1, nullptr, nullptr,\r\n      RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE,\r\n      nullptr, EOAC_STATIC_CLOAKING, nullptr));\r\n    auto obj = CreateHoge();\r\n    ATL::CComVariant v;\r\n    DISPID dispid = DISPID_VALUE;\r\n    ATLENSURE_SUCCEEDED(obj.Invoke0(dispid, &v));\r\n    ATLENSURE_SUCCEEDED(v.ChangeType(VT_BSTR));\r\n    if (v.bstrVal != nullptr)\r\n    {\r\n      std::wcout << v.bstrVal << std::endl;\r\n    }\r\n\r\n    std::cin.get();\r\n  }\r\n  catch(const ATL::CAtlException&#038; e)\r\n  {\r\n    std::wclog << std::hex << std::showbase << e.m_hr << std::endl;\r\n    std::wclog <<\r\n      boost::implicit_cast<PCWSTR>(ATL::AtlGetErrorDescription(e)) << std::endl;\r\n  }\r\n  CoUninitialize();\r\n}\r\n<\/pre>\n<p>\u76f8\u5909\u308f\u3089\u305a\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u5fae\u5999\u3067\u3059\u3002\u5b9f\u969b\u306b\u4f7f\u3046\u3068\u304d\u306b\u306f\u771f\u4f3c\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3059\u308b\u3068\u300c0 1008\u300d\u3068\u51fa\u529b\u3055\u308c\u307e\u3059\u30021008\u306fERROR_NO_TOKEN\u3067\u3001OpenThreadToken\u306e\u5834\u5408\u30b9\u30ec\u30c3\u30c9\u304c\u507d\u88c5\u4e2d\u3067\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u300c\u30d7\u30ed\u30bb\u30b9\u306e\u30c8\u30fc\u30af\u30f3\u306f\u5909\u308f\u3089\u305a\u3001\u30b9\u30ec\u30c3\u30c9\u30c8\u30fc\u30af\u30f3\u3060\u3051\u304c\u507d\u88c5\u3055\u308c\u3066\u3044\u308b\u300d\u3068\u3044\u3046\u72b6\u614b\u3067\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3001\u3053\u306e\u3088\u3046\u306a\u51e6\u7406\u3092\u5165\u308c\u307e\u3057\u305f\u3002<\/p>\n<p>\u307e\u305f\u3001Process Explorer\u3067\u7279\u6a29\u304c\u524a\u9664\u3055\u308c\u3001IL\u304cLow\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\u8a66\u3057\u305f\u30d0\u30fc\u30b8\u30e7\u30f3\u306fWindows XP\u30688.1\u3067\u3059\u3002<\/p>\n<p>\u6b21\u56de\u3001\u3082\u30461\u3064\u4f3c\u305f\u3088\u3046\u306a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n<p>\u4f59\u8ac7\u3067\u3059\u3002\u4eca\u56de\u306e\u30b3\u30fc\u30c9\u3092\u8a66\u3057\u3066\u3044\u3066\u3001\u7591\u554f\u306f\u5897\u3048\u308b\u4e00\u65b9\u3067\u3059\u3002\u30d7\u30e9\u30a4\u30de\u30ea\u30c8\u30fc\u30af\u30f3\u3067\u306f\u306a\u304f\u507d\u88c5\u30c8\u30fc\u30af\u30f3\u3060\u3063\u305f\u5834\u5408\u3001\u30bb\u30c3\u30b7\u30e7\u30f3ID\u304c\u7570\u306a\u308b\u30c8\u30fc\u30af\u30f3\u306e\u5834\u5408\u3001\u30ec\u30b8\u30b9\u30c8\u30ea\u306eAppID\u306eRunAs\u3067\u30e6\u30fc\u30b6\u30fc\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001ImpersonateAnonymousToken\u3067\u507d\u88c5\u3057\u305f\u5834\u5408\u3001CoGetClassObject\u3067\u6e21\u305b\u308bCOAUTHINFO\u3068\u306e\u517c\u306d\u5408\u3044\u306a\u3069\u3001\u3044\u308d\u3044\u308d\u8a66\u3057\u3066\u307f\u305f\u3044\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[5,10,13],"tags":[142,45,313,287],"class_list":["post-752","post","type-post","status-publish","format-standard","hentry","category-cpp","category-com","category-winapi","tag-atl","tag-boost","tag-sid","tag-access-token"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d<\/title>\n<meta name=\"description\" content=\"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d\" \/>\n<meta property=\"og:description\" content=\"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/\" \/>\n<meta property=\"og:site_name\" content=\"\u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ysk.noh\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-19T14:35:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-01-23T18:03:43+00:00\" \/>\n<meta name=\"author\" content=\"egtra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@egtra\" \/>\n<meta name=\"twitter:site\" content=\"@egtra\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"egtra\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/\",\"url\":\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/\",\"name\":\"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d\",\"isPartOf\":{\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/#website\"},\"datePublished\":\"2015-04-19T14:35:55+00:00\",\"dateModified\":\"2016-01-23T18:03:43+00:00\",\"author\":{\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/#\/schema\/person\/8de756b2ff20b964f64594dfe8f18164\"},\"description\":\"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\/\/dev.activebasic.com\/egtra\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/#website\",\"url\":\"https:\/\/dev.activebasic.com\/egtra\/\",\"name\":\"\u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d\",\"description\":\"\u982d\u306e\u4e2d\u306e\u304b\u3051\u3089\u3002ActiveBasic\u3092\u4e2d\u5fc3\u306b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u8a71\u3092\u307c\u3061\u307c\u3061\u3068\u3002\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dev.activebasic.com\/egtra\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dev.activebasic.com\/egtra\/#\/schema\/person\/8de756b2ff20b964f64594dfe8f18164\",\"name\":\"egtra\",\"sameAs\":[\"https:\/\/x.com\/egtra\"],\"url\":\"https:\/\/dev.activebasic.com\/egtra\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d","description":"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/","og_locale":"ja_JP","og_type":"article","og_title":"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d","og_description":"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002","og_url":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/","og_site_name":"\u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d","article_publisher":"https:\/\/www.facebook.com\/ysk.noh","article_published_time":"2015-04-19T14:35:55+00:00","article_modified_time":"2016-01-23T18:03:43+00:00","author":"egtra","twitter_card":"summary_large_image","twitter_creator":"@egtra","twitter_site":"@egtra","twitter_misc":{"\u57f7\u7b46\u8005":"egtra","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"1\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/","url":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/","name":"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09 - \u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d","isPartOf":{"@id":"https:\/\/dev.activebasic.com\/egtra\/#website"},"datePublished":"2015-04-19T14:35:55+00:00","dateModified":"2016-01-23T18:03:43+00:00","author":{"@id":"https:\/\/dev.activebasic.com\/egtra\/#\/schema\/person\/8de756b2ff20b964f64594dfe8f18164"},"description":"CoCreateInstance\u3067\u507d\u88c5\u4e2d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u308b\u8a71\u3067\u3059\u3002\u4f4eIL\u30d7\u30ed\u30bb\u30b9\u3067\u52d5\u304f\u30a2\u30a6\u30c8\u30d7\u30ed\u30bb\u30b9\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u308a\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dev.activebasic.com\/egtra\/2015\/04\/19\/752\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/dev.activebasic.com\/egtra\/"},{"@type":"ListItem","position":2,"name":"\u4fdd\u8b77\u30e2\u30fc\u30c9+\u03b1\u306a\u30d7\u30ed\u30bb\u30b9\u3092CoCreateInstance\u3067\u4f5c\u308b\uff08\u305d\u306e1\uff09"}]},{"@type":"WebSite","@id":"https:\/\/dev.activebasic.com\/egtra\/#website","url":"https:\/\/dev.activebasic.com\/egtra\/","name":"\u30a4\u30b0\u30c8\u30e9\u30f3\u30b9\u306e\u982d\u306e\u4e2d","description":"\u982d\u306e\u4e2d\u306e\u304b\u3051\u3089\u3002ActiveBasic\u3092\u4e2d\u5fc3\u306b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u8a71\u3092\u307c\u3061\u307c\u3061\u3068\u3002","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev.activebasic.com\/egtra\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/dev.activebasic.com\/egtra\/#\/schema\/person\/8de756b2ff20b964f64594dfe8f18164","name":"egtra","sameAs":["https:\/\/x.com\/egtra"],"url":"https:\/\/dev.activebasic.com\/egtra\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/posts\/752"}],"collection":[{"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":0,"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/posts\/752\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/categories?post=752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.activebasic.com\/egtra\/wp-json\/wp\/v2\/tags?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}