{"id":1112,"date":"2014-08-03T21:07:31","date_gmt":"2014-08-03T19:07:31","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=1112"},"modified":"2014-08-03T21:08:18","modified_gmt":"2014-08-03T19:08:18","slug":"eine-ueberraschung-mit-getmodulefilename","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2014\/08\/03\/eine-ueberraschung-mit-getmodulefilename\/","title":{"rendered":"Eine \u00dcberraschung mit GetModuleFileName"},"content":{"rendered":"<p>Ich habe ein Programm um COM-Automation erweitert. Der Test verlief super. Das Programm lief stand alone oder wurde \u00fcber die Automation <em>(CoCreateInstance)<\/em> gestartet. Das Programm wurde im Installer integriert und ab da ging erst mal nichts mehr.<\/p>\n<p>Wurde der externe COM Server \u00fcber die Automation gestartet wurden auf einmal Satelite-DLLs nicht mehr gefunden. Das Programm ermittelte mit <em>GetModuleFileName<\/em> den Programmnamen. Erg\u00e4nzte DEU zum Beispiel f\u00fcr die Deutsche Programmversion und suchte eine entsprechende DLL. Eigentlich ganz einfach. Das funktionierte aber nicht, weil <em>GetModuleFileName<\/em> den kurzen Dateinamen zur\u00fcck gab. Also: aus <em>PROGRAMM.EXE<\/em> wurde <em>PROGRA~1.EXE<\/em> und Die Datei <em>PROGRA~1DEU.DLL<\/em> wurde gesucht, anstatt <em>PROGRAMMDEU.DLL<\/em>. Aber dann nicht gefunden&#8230;<\/p>\n<p>Der Installer erzeugt scheinbar bei mir kurze\u00a0Dateinamen in der Registrierung und auch <em>MsiGetComponentPath,<\/em> dass beim Start \u00fcber <em>CoCreateInstance<\/em> konsultiert wurde, lieferte den kurzen Dateinamen.<\/p>\n<p>Wirklich erstaunlich ist aber, dass der Name der in <em>CreateProcess<\/em> verwendet wurde auch sp\u00e4ter durch <em>GetModuleFileName<\/em> zur\u00fcckgegeben wird. Wird also der kurze Dateiname beim Start verwendet, dann liefert <em>GetModuleFileName<\/em> einen kurzen Dateinamen.<\/p>\n<p>Grunds\u00e4tzlich kann man also nicht davon ausgehen, dass <em>GetModuleFileName<\/em> den langen Dateinamen zur\u00fcck liefert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe ein Programm um COM-Automation erweitert. Der Test verlief super. Das Programm lief stand alone oder wurde \u00fcber die Automation (CoCreateInstance) gestartet. Das Programm wurde im Installer integriert und ab da ging erst mal nichts mehr. Wurde der externe COM Server \u00fcber die Automation gestartet wurden auf einmal Satelite-DLLs nicht mehr gefunden. Das Programm &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2014\/08\/03\/eine-ueberraschung-mit-getmodulefilename\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eEine \u00dcberraschung mit GetModuleFileName\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":[30,3,2],"tags":[92,61],"class_list":["post-1112","post","type-post","status-publish","format-standard","hentry","category-c","category-programmieren","category-windows-api","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\/1112","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=1112"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/1112\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=1112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=1112"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=1112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}