{"id":322,"date":"2008-12-10T19:54:01","date_gmt":"2008-12-10T18:54:01","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=322"},"modified":"2008-12-11T14:45:32","modified_gmt":"2008-12-11T13:45:32","slug":"externe-und-interne-com-zugriffe-unterscheiden","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2008\/12\/10\/externe-und-interne-com-zugriffe-unterscheiden\/","title":{"rendered":"Externe und interne COM Zugriffe unterscheiden"},"content":{"rendered":"<p>Ich benutze als interne Makrosprache gerne <em>VBScript<\/em>. D.h. ich hoste <em>VBScript<\/em>.<br \/>\nIch biete dann bestimmte\u00a0<em>COM<\/em>-Objekte (<em>IDisptach<\/em>) an, die es dem Nutzer erlauben mein \u00a0Programm anzupassen oder intern zu steuern.<\/p>\n<p>Nun macht es aber unter Umst\u00e4nden einen gravierenden Unterschied, ob ein\u00a0<em>COM<\/em>-Objekt von einem programminternen Nutzer, oder von extern angesprochen wird. Intern m\u00f6chte ich zum Beispiel mehr\u00a0 oder andere Funktionen erlauben als durch einen externen Zugriff von einem anderen Programm oder Skript.<\/p>\n<p>Wie kann man aber\u00a0unterscheiden von wo ein <em>COM <\/em>Zugriff\u00a0erfolgt \u2753<\/p>\n<p>Netterweise hat COM\u00a0die\u00a0Funktion <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms691483(VS.85).aspx\">CoGetCallContext<\/a>, die mir genau diese Info liefert. Liefert <em>CoGetCallContext S_OK <\/em>und damit einen Interfacezeiger auf <em>IServerSecurity<\/em>, dann wurde der COM Zugriff von einem externen Prozess abgesetzt. Wenn <em>CoGetCallObject E_NOINTERFACE <\/em>zur\u00fcck gibt haben wir einen internen Aufruf aus dem eigenen Prozess heraus.<\/p>\n<pre lang=\"cpp\">bool IsExternalComCall()\r\n{\r\n \/\/ get context\r\n CComPtr&lt;IServerSecurity&gt; spSecurity;\r\n HRESULT hr = ::CoGetCallContext(IID_IServerSecurity,\r\n                      reinterpret_cast&lt;void**&gt;(&amp;spSecurity));\r\n return SUCCEEDED(hr);\r\n}<\/pre>\n<p lang=\"cpp\">Herzlichen Dank an Ren\u00e9 K\u00f6nig f\u00fcr diesen Ansatz, den er mir in microsoft.public.de.vc gab.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich benutze als interne Makrosprache gerne VBScript. D.h. ich hoste VBScript. Ich biete dann bestimmte\u00a0COM-Objekte (IDisptach) an, die es dem Nutzer erlauben mein \u00a0Programm anzupassen oder intern zu steuern. Nun macht es aber unter Umst\u00e4nden einen gravierenden Unterschied, ob ein\u00a0COM-Objekt von einem programminternen Nutzer, oder von extern angesprochen wird. Intern m\u00f6chte ich zum Beispiel mehr\u00a0 &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2008\/12\/10\/externe-und-interne-com-zugriffe-unterscheiden\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eExterne und interne COM Zugriffe unterscheiden\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25,3,9,2],"tags":[370,92,61],"class_list":["post-322","post","type-post","status-publish","format-standard","hentry","category-atl","category-programmieren","category-sonstiges","category-windows-api","tag-c","tag-com","tag-winapi"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=322"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/322\/revisions"}],"predecessor-version":[{"id":379,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/322\/revisions\/379"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=322"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}