path

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

path

Beitrag von moritz »

Hallo,
mit sPfad= Environ ("PATH") kann man unter Windows die Umgebungsvariable Path auslesen. Wie kann man diese mit Starbasic bearbeiten? Mit VBA scheint das mit SetEnvironmentVariable "PATH", sNeuPfad zu funtionieren. Gibt es in Starbasic dafür einen Ersatz?
Moritz
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Moritz,
Gibt es in Starbasic dafür einen Ersatz?
Nein, jedenfalls nicht, soweit mir bekannt ist. Die Umgebungsvariable wird vom Betriebssystem gesetzt und sollte nur dort (auf dieser Ebene ) verändert werden können. In VBA vermischen sich leider die Möglichkeiten, eine Office-Suite zu automatisieren mit den Möglichkeiten, auch das Betriebssystem zu manipulieren. Eine in meinen Augen eklatante Sicherheitslücke. Gut, dass dies mit OOo Basic nicht geht.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Sorry, ich bin so erkältet das ich kaum auf den Monitor schauen kann, aber:
Die Umgebungsvariable wird vom Betriebssystem gesetzt und sollte nur dort (auf dieser Ebene ) verändert werden können.
Was soll denn das inhaltlich bedeuten?
(Selbst unter DOS kann ich mit einer einfachen *.bat den "PATH" ändern, vielleicht könnte man ja die autoexec.bat noch als "Teil" des Betriebssystems sehen aber eine einfache Stapeldatei ist doch wohl kaum Teil des Betriebssystems.)
In VBA vermischen sich leider die Möglichkeiten, eine Office-Suite zu automatisieren mit den Möglichkeiten, auch das Betriebssystem zu manipulieren. Eine in meinen Augen eklatante Sicherheitslücke.
VBA hat sich (ausgehend von einer Sprache zur Automatisierung von Aufgaben innerhalb von Office) zu einer vollwertigen Programmiersprache entwickelt. Man kann das bedauern oder begrüßen, nur Tatsache ist doch das der Schutz des Betriebssystems dem Betriebssystem selber obliegt. Es ist doch keine ERhöhung der Sicherheit wenn andere Programmiersprachen auf die Nutzung von Möglichkeiten verzichten die das Betriebssystem bietet. Bietet ein Betriebssystem Möglichkeiten des Zugriffs die die Sicherheit gefährden müssen diese innerhalb des Betriebssystems unterbunden werden.
Gut, dass dies mit OOo Basic nicht geht.
Wenn eine Makrosprache einer OfficeSuite mehr sein soll als eine reine 'Automatisierungsprogrammierung' dann sollte diese Sprache alle Möglichkeiten nutzen die das Betriebssystem bietet, ob eine Makrosprache mehr als eine 'Automatisierungsprogrammierung' sein sollte kann ich nicht festlegen, mir scheint jedoch das der Trend in diese Richtung geht. Und klar - wir sind uns natürlich einig das nicht jeder einfach mittels BasicCode an Windows "herumdoktern" sollte solange er nicht genau überblickt was er tut.

(ich hoffe das war nicht zuviel 'geflamed')

Zur eigentlichen Ausgangsfrage:
Die PATH-Variable kann auch mit StarBasic direkt aus der Registrierung gelesen werden. Die mit OpenOffice ausgelieferten Beispielmodule enthalten etwas Code zum Lesen in der Registry (Bibliotheken "Import-Wizard" und "Tools"). Da ich gerade im englischen Forum gesucht habe scheint es mir jedoch das auch ein Schreibzugriff auf die Registry möglich ist weil ich hier http://www.oooforum.org/forum/viewtopic ... light=hkey den Kommentar "Get/Create Key Value" lesen kann. Geprüft habe ich derzeitig nichts. Sollte ein Schreibzugriff möglich sein so läßt sich zumindest auf diesem Wege auch die Path-Variable ändern.
Bloß wozu brauchst Du das denn überhaupt? Ich kann mir jetzt nämlich Nichts denken wo so etwas zwingend wäre und fände es im Grundsatz unklug etwas "betriebssystemspezifisches" in ein Makro zu schreiben, welches unter einer Multiplattform-OfficeSuite läuft. Falls es also keine wirklich zwingenden Gründe gibt würde ich immer eine betriebssystenübergreifende Lösung bevorzugen.


Gruß
Stephan
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

path

Beitrag von moritz »

Hi, Danke für den Hinweis auf die Registry. Die kann ich auslesen und auch bearbeiten.
Ich übersetze gerade ein VBA- Programmchen. Dort ist eine dll im Verzeichnis eines Programmes gespeichert und nicht im Suchpfad von Windows. Deshalb wird der Suchpfad erweitert. Prinzipiell wäre es natürlich auch ganz einfach möglich, die dll nach System32 zu verschieben. Linux muß ich nicht berücksichtigen, da das Programm leider nur unter Windows läuft.
Der Hinweis, daß Starbasic "glücklicherweise" nicht auf das Betriebssystem zugreifen kann, ist natürlich Unsinn. Z.B. könnte mit Shell immer eine einfache Batchdatei gestartet werden, um den Pfad zu ändern. Wer Vorteile von Starbasic herausstreichen will, sollte schon geschickter argumentieren. Vorteile von VBA zu finden, fällt immer noch leichter. Da muß ich nur an den Editor denken! Trotzdem und trotz der zum Rechner mit gelieferten MS- Office- Version arbeite ich fast ausschließlich nur noch mit OpenOffice.
Moritz
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

und auch bearbeiten
also ich habe das bisher nur anhand des Kommentars in Code vermutet und nicht geprüft. Wenn das definitiv geht dann poste doch bitte mal den relevanten Code.
Ich übersetze gerade ein VBA- Programmchen. Dort ist eine dll im Verzeichnis eines Programmes gespeichert und nicht im Suchpfad von Windows. Deshalb wird der Suchpfad erweitert.
Verstehe ich trotzdem nicht, soll die dll gesucht werden? Bloß wenn die dll im Programmverzeichnis ist und das Programmverzeichnis in Standardordner C:\Programme kannst Du doch in der Registrierung lesen wo es ist (zumindest über uninstall-Eintrag), ist das Programm nicht "richtig" installiert kann es doch ohnehin überall sein.
Der Hinweis, daß Starbasic "glücklicherweise" nicht auf das Betriebssystem zugreifen kann, ist natürlich Unsinn. Z.B. könnte mit Shell immer eine einfache Batchdatei gestartet werden, um den Pfad zu ändern. Wer Vorteile von Starbasic herausstreichen will, sollte schon geschickter argumentieren.


Ups, da habe ich wohl die Vorlage geliefert - aber sei sicher Thomas wollte nichts herausstreichen.
Vorteile von VBA zu finden, fällt immer noch leichter.


Mit Betonung auf "finden" OK, StarBasic ist derzeitig noch schlecht dokumentiert. Es ist deshalb etwas aufwendig Informationen zu finden (und Beherrschung der englischen Sprache hierzu wohl zwingend), schau doch mal ins englische Forum da gibt es reichlich Infos auch zu sehr speziellen Themen der Programmierung. Mit Literatur sieht es zugegeben noch schlecht aus, bloß OOo in der jetzigen Form gibt es vielleicht seit 2,5 Jahren und VBA doch mindestens seit 7.



Gruß
Stephan
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Beitrag von moritz »

Hallo,
zu meiner Funktion. Ich lese aus der Registry den Programmpfad aus. In diesem Verzeichnis liegt eine dll, auf die ich mit diesen Funktionen zugreife:

Declare Function OrgAPIInit Lib "OrgAPI32" (ByVal hWnd&, ByVal hInstance&, ByVal hPrevInstance&, lpfnMsgCallback&, ByVal lpszContainerPath$, ByVal lpszName$, ByVal lpszPassword$, ByVal ApiInitFlags&, lpOrgAPIInitError&) As Long

Vorher wird im VBA Makro der Systempfad erweitert. Ich nehme an, daß sonst die dll nicht gefunden wird. Aber ich kann sie natürlich auch in das System32- Verzeichnis kopieren.
Auf die Registry habe ich bis jetzt nur lesend zugegriffen. Die Funktionen dazu sind in ImportWizard- API enthalten. Das Schreiben geht mit diesen Funktionen nicht.
Moritz
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Vorher wird im VBA Makro der Systempfad erweitert. Ich nehme an, daß sonst die dll nicht gefunden wird.
Ja hier ist nun genau so ein Punkt im Sinne:
Gut, dass dies mit OOo Basic nicht geht.
Du änderst etwas am System ohne zu wissen wozu das nötig ist (Zitat: "Ich nehme an")!
Vielleicht ist es ja für Deine Zwecke auch nur nötig das aktuelle Verzeichnis zu wechseln -->ChDir.

Und warum geht denn nicht:

Declare Function OrgAPIInit Lib "<pfad>\OrgAPI32.dll" (ByVal ...


Auf die Registry habe ich bis jetzt nur lesend zugegriffen. Die Funktionen dazu sind in ImportWizard- API enthalten. Das Schreiben geht mit diesen Funktionen nicht.
Ja das war mir klar, bloß wenn es so ist verstehe ich Deine Begeisterung nicht:
Hi, Danke für den Hinweis auf die Registry. Die kann ich auslesen und auch bearbeiten.



Gruß
Stephan
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Registry

Beitrag von moritz »

Hi,
inzwischen bin ich etwas schlauer. Mit VBA habe ich gefunden, wie auch in die Registry geschrieben werden kann. In der gleichen dll, die das Auslesen ermöglicht, sind auch Funktionen zum Schreiben enthalten. Geht analog also auch mit Starbasic. Ich glaube aber, hier schieße ich mit Kanonen auf Spatzen. Es gibt vorerst wichtigeres,
Als Laie wird man übrigens vieles probieren müssen, ohne zu wissen, ob das wirklich nötig ist. Es führen immer viele Wege nach Rom.

Moritz
Antworten