| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: c source code, Änderung und Kompilierung (1501 mal gelesen)
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 23. Aug. 2010 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo die Damen und Herren, um mein Konzept "serverbasierte AutoCAD Profile" umzusetzen, benötige ich ein Kommandozeilentool das im Batchbetrieb in Reg und xml basierten AutoCAD Support Daten Zeichenersetzungen vornimmt. Das habe ich auch mehrfach in verschiedensten Formen gefunden. Leider hat sich jetzt im finalen Testbetrieb herausgestellt, dass das Tool meiner Wahl im Betrieb mit eingeschränkten lokalen Rechten nicht läuft. Das Tool versucht im System-Root Folder eine temporäre Datei anzulegen, was natürlich als Standard-User nicht geht. Super . Nun liegt aber der Source Code vor und es sollte für 'nen erfahrenen C Programmier wohl kein Problem sein den Code auf %temp% zu verändern und dann neu zu kompilieren. Nur leider bin ich weder C Programmierer noch erfahren darin. Hat irgendwer hier aus dem Forum Lust und Zeit sich dieser Sache anzunehmen? Das finale Produkt: Anwendung des "Definitive Guide to Installing AutoCAD Architecture" und meine Ergänzungne dazu würde ich natürlich wie immer hier bei CAD.de veröffentlichen. Es wäre also u.A. auch ein Beitrag für die Community ;-) *locklock* Das von mir verwendete Tool inkl. Quellcode ist hier zu finden: StrFind at Softpedia Macht mich heute jemand glücklich? ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 23. Aug. 2010 15:26 <-- editieren / zitieren -->
Hi, das 'StrFind at Softpedia' hat aber auch nix mit AutoCAD zu tun. Leider fehlt der Hinweis, dass es modifizierbar wäre, also welche Form der Lizenzgebung (und damit Freigabe zur Veränderung) kann ich nicht finden. Findest Du welche, aus denen hervorgeht, dass es verändert werden darf, lass es mich wissen. - alfred - ------------------ www.hollaus.at |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 23. Aug. 2010 15:44 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, es hat nur insofern mit AutoCAD zu tun als das ich es benutzte um den Usernamen in den XML und Regfiles auszutauschen. Matthew Stachoni verwendet dazu in seinem Konzept das kostenpflichtige xchangecl.exe. Das möchte ich natürlich nicht verwenden. Im Source Code zu strfind.exe (im Download von softpedia enthalten) finde ich bzgl. Lizenz folgenden Passus in jeder Source Datei: Zitat:
// This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or (at // your option) any later version. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // For a copy of the GNU General Public License, write to the Free // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA.
Nun bin ich auch kein Fachmann für Lizenzfragen, für mich als Laien hört sich das jedoch so an als ob ich Änderungen am SourceCode vornehmen darf solange der Source Code wiederum unter GNU Public License veröffentlich wird. Das wäre natürlich Voraussetzung für denjenigen der die gewünschte Änderung vornehmen könnte/würde. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 23. Aug. 2010 18:16 <-- editieren / zitieren -->
Hi, sorry, hab's mir angesehen, ist noch C++ Version 6 (hab ich schon lange nicht mehr und wäre darin schon zu sehr aus der Übung), die gleichzeitige Konvertierung auf neu plus den Einbau auf Temp-Path ist aber dann wieder eine Menge Testarbeit. Bin damit leider out. Sorry, ich hoffe es gibt noch wen anderen, - alfred - ------------------ www.hollaus.at |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 23. Aug. 2010 19:11 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 23. Aug. 2010 19:15 <-- editieren / zitieren -->
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 23. Aug. 2010 19:22 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 23. Aug. 2010 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für marc.scherer
Zitat: Original erstellt von marc.scherer: ... Leider hat sich jetzt im finalen Testbetrieb herausgestellt, dass das Tool meiner Wahl im Betrieb mit eingeschränkten lokalen Rechten nicht läuft. Das Tool versucht im System-Root Folder eine temporäre Datei anzulegen, was natürlich als Standard-User nicht geht. ...
Im Quellcode habe ich auf den ersten Blick keinen expliziten Zugriff auf Systemroot finden können. BAK Dateien und Indexdateien werden im Verzeichnis der aktuellen Datei abgelegt. benutzt du Wildcards für die Dateien? Rufst du das Programm mit UNC Pfad auf? Kannst du vielleicht eine Beispiel Batch Datei mit dem von dir gewünschten Aufruf und auch noch eine Beispiel XML dazupacken? Quellcode lässt sich problemlos kompilieren, aber ich hab keinen geeigneten Testdatensatz bzw. Testaufruf, mit dem ich testen könnte. Welche Fehlermeldung erhälst du denn bei einem Aufruf mit eingeschränkten Benutzerrechten? ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 23. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 23. Aug. 2010 21:46 <-- editieren / zitieren -->
Hi, im File StrFind.cpp ==> Zeile 638 ist dieses Statement const char *TempFilename = tmpnam(NULL); wohl der Auslöser, ev. hilfts Dir, Udo. - alfred - ------------------ www.hollaus.at |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 24. Aug. 2010 07:30 <-- editieren / zitieren --> Unities abgeben: Nur für marc.scherer
Zitat: Original erstellt von a.n.: const char *TempFilename = tmpnam(NULL);[/i]
Möglich, dann kann man das ggf. sogar ohne Programmänderung beheben. Zitat: DESCRIPTION The tmpnam() function generates a name for a temporary file. At the time that it is generated, the name is not in use by any existing file on the system. tmpnam() uses the TMPDIR environment variable as the path-prefix if set; otherwise, tmpnam() falls back to using the value of environment variable TMP, and then TEMP. Within a single process, the function tmpnam() will generate a new name each time it is called.
bzw. http://msdn.microsoft.com/en-us/library/hs3e7355.aspx Zitat: _tempnam will generate a unique file name for a directory chosen by the following rules: * If the TMP environment variable is defined and set to a valid directory name, unique file names will be generated for the directory specified by TMP. * If the TMP environment variable is not defined or if it is set to the name of a directory that does not exist, _tempnam will use the dir parameter as the path for which it will generate unique names. * If the TMP environment variable is not defined or if it is set to the name of a directory that does not exist, and if dir is either NULL or set to the name of a directory that does not exist, _tempnam will use the current working directory to generate unique names. Currently, if both TMP and dir specify names of directories that do not exist, the _tempnam function call will fail.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 24. Aug. 2010 10:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, Hallo Alfred, vielen Dank für Eure rege Beteiligung. Über die Doku von TMPNAM bin ich auch schon gestolpert, nur leider hält sich die Funktion nicht daran, wenn sie im Kontext eines einfachen Windows Benutzerkontos läuft. Als lokaler Admin: Kein Problem. Nachfolgend für Dich Udo ein paar Antworten zu Deinen Fragen... Beispiel Batch Datei: [Edit: TEMPDIR mit TMPDIR ersetzt, aber keine Änderung des Verhaltens] Zitat:
set TMPDIR=c:\Temp set TMP=c:\Temp set TEMP=c:\Temp c: cd c:\temp REM Debugging Alternative Zeile getestet REM C:\Temp\strfind.exe -r -y -t -k- -b ACATemplateUser %USERNAME% "c:\temp\regfile.reg" strfind.exe -r -y -t -k- -b ACATemplateUser %USERNAME% regfile.reg
Zitat: Original erstellt von CAD-Huebner: Welche Fehlermeldung erhälst du denn bei einem Aufruf mit eingeschränkten Benutzerrechten?
Rufe ich die Batch als User auf, kommt es zu folgender Fehlermeldung: Zitat:
Meldung, wenn Sicherheitslevel User: Error opening "\s5q8." for output. >> Total: 0 instance(s) of "ACATemplateUser" replaced with "ACATestUser".Meldung, wenn Sicherheitslevel Admin >> Total: 271 instance(s) of "ACATemplateUser" replaced with "Scherer".
Zitat: Original erstellt von CAD-Huebner: Im Quellcode habe ich auf den ersten Blick keinen expliziten Zugriff auf Systemroot finden können. BAK Dateien und Indexdateien werden im Verzeichnis der aktuellen Datei abgelegt.
Ich habe mir mit filemon angeschaut, was das Tool macht: Es versucht direkt auf c: eine temporäre Datei anzulegen, was der lokale Admin natürlich darf. Also scheint mir entweder das Programm fehlerhaft, wenn tmpnam einen temporären Pfad\Dateinamen generiert aber folgende Funktionen trotzdem versuchen das im Root zu erzeugen oder TMPNAM ist fehlerhaft und verheddert sich unter WinXP indem es die gesetzten Variablen ignoriert oder aber an falscher Stelle sucht bzw. als Arbeitsverzeichnis generell das Rootdrive verwenden will. Zitat: Original erstellt von CAD-Huebner: benutzt du Wildcards für die Dateien?
Nein Zitat: Original erstellt von CAD-Huebner: Rufst du das Programm mit UNC Pfad auf?
Nein, jetzt nicht mehr. War auch einer meiner ersten Gedanken. Ich kopiere strfind.exe und die zu manipulierenden Dateien nach c:\temp und rufe dann strfind mit jeder einzelnen Datei aus dem c:\temp Verzeichnis auf. Zitat: Original erstellt von CAD-Huebner: Kannst du vielleicht eine Beispiel Batch Datei mit dem von dir gewünschten Aufruf und auch noch eine Beispiel XML dazupacken?
Yep, anbei. ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 24. Aug. 2010 editiert.] [Diese Nachricht wurde von marc.scherer am 24. Aug. 2010 editiert.] [Diese Nachricht wurde von marc.scherer am 24. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 24. Aug. 2010 12:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, Hallo Alfred, meine Rufe wurden erhört. Ich habe im SourceCode von: "strfind.cpp" die Zeile: const char *TempFilename = tmpnam(NULL); durch: const char *TempFilename = tempnam(NULL,NULL); austauschen lassen und einen freundlichen Kollegen gefunden, der das mit VS2010 neu kompiliert hat... Und es geht prima! Die temporäre Datei wird nun erwartungsgemäß im Temp-Bereich des Users erzeugt. Problem gelöst, geänderter SourceCode und neue Version des Kompilats hier als Anhang. Thanx @all. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|