Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Hilfedateien lokal OK, übers Netz Fehlermeldung (https://www.delphipraxis.net/153903-hilfedateien-lokal-ok-uebers-netz-fehlermeldung.html)

zeras 19. Aug 2010 17:54

Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Hallo,

ich bin gerade dabei, die Hilfe (*.chm) in mein Programm einzubauen. Dazu habe ich verschieden Tutorials schon genutzt und erste Erfolge sind auch schon da. Wenn ich das Programm lokal starte und die Hilfe anzeigen lassen will, ist das OK, wenn ich das Programm aber übers Netz starte, kommt dann nur der Hilfe Dialog, aber meine Hilfe wird nicht angezeigt. Macht da Windows mit Sicherheit Probleme oder was kann das sein?

Nachfolgend der Start der Hilfe.
Delphi-Quellcode:
procedure TfMain.ViewerHilfe1Click(Sender: TObject);
var h: HWND;
    P: PChar;

begin
  h := GetDesktopWindow;
  P:=PChar(chmFile);

  _HHwinHwnd := HtmlHelp(h, P, HH_DISPLAY_TOPIC, 0);
end;

mirage228 19. Aug 2010 18:12

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Sicherheit dürfte das Stichwort sein. Soweit ich mich erinnere, hat Microsoft da den Zugriff auf CHM-Dateien über Netzwerk bzw. Internet eingeschränkt, weil dort mehrfach Probleme (Sicherheitslücken) aufgetreten sind.

Weiß nicht, ob man diese Restriktion noch lockern kann...

Viele Grüße

DeddyH 19. Aug 2010 18:18

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Leg einmal diesen Schlüssel in der Registry an (falls er noch nicht existiert):
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions
Unter diesem Schlüssel legst Du dann einen DWORD-Wert mit Namen MaxAllowedZone an und vergibst den Wert 2. Geht es jetzt?

zeras 19. Aug 2010 18:18

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Dann wäre das ja ein "Super Rückschritt". Bei einem älteren Programm hatte ich noch die alten Helpdateien genutzt, nun wollte ich alles "neu" machen und dann kommt es zu dem Problem.
Hat jemand eine Idee, wie man das doch hinbekommt? Ansonsten bleibt ja nur wieder der Umstieg auf die alten Heldateien. Ich hatte gerade angefangen, mich in die "chm" Dateien einzuarbeiten.

DeddyH 19. Aug 2010 18:19

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Siehe #3 (hat sich wohl überschnitten).

zeras 19. Aug 2010 18:25

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von DeddyH (Beitrag 1043506)
Leg einmal diesen Schlüssel in der Registry an (falls er noch nicht existiert):
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions
Unter diesem Schlüssel legst Du dann einen DWORD-Wert mit Namen MaxAllowedZone an und vergibst den Wert 2. Geht es jetzt?

S U P E R !!!!! Nun geht es. Muß ich den Schlüssel dann nur in meinem Programm erzeugen und dann geht alles?
Oder brauche ich da wieder Rechte dazu?
Wie soll man allein auf solche Antworten kommen? Das steht doch bestimmt nirgends extra beschrieben?

rollstuhlfahrer 19. Aug 2010 18:29

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Du wirst dafür Administratorrechte brauchen, da du in den HKLM-Zweig schreibst.

Bernhard

DeddyH 19. Aug 2010 18:29

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Du kannst den Schlüssel doch vom Setup Deines Programms erzeugen lassen. Das muss allerdings auf jedem Client im Netz, der auf die Hilfe zugreifen soll, geschehen.

zeras 19. Aug 2010 18:32

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von DeddyH (Beitrag 1043513)
Du kannst den Schlüssel doch vom Setup Deines Programms erzeugen lassen. Das muss allerdings auf jedem Client im Netz, der auf die Hilfe zugreifen soll, geschehen.

Danke für die Infos. Ich nehme Inno Setup, da kann ich ja den Schlüssel erzeugen lassen. In den meisten Fällen wird das Programm lokal laufen, aber ich hatte auch schon den Fall, dass es auf dem Server laufen muss.

Danke nochmals, werde das gleich in die Setup Routine einbauen.

Nils_13 19. Aug 2010 18:42

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Geht nur um das Grundprinzip: Ist es eine gute Idee die Admineinschränkung zu umgehen ? Leuten wie mir ist es egal, aber ich finde solche Wertänderungen sollten vermerkt werden, wenn der Benutzer einem schon vertraut das Programm überhaupt auszuführen. Geht aber wirklich nur um das Grundprinzip, habe halt die Erfahrung dass durch solche Registryeinträge oftmals weitaus mehr als nur das Gewünschte verändert wird. EDIT: Wobei gut, der Registrywert stinkt nach ausschließlich HTML-Hilfe, ich nehme es wieder zurück.

zeras 19. Aug 2010 18:49

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von Nils_13 (Beitrag 1043516)
Geht nur um das Grundprinzip: Ist es eine gute Idee die Admineinschränkung zu umgehen ? Leuten wie mir ist es egal, aber ich finde solche Wertänderungen sollten vermerkt werden, wenn der Benutzer einem schon vertraut das Programm überhaupt auszuführen. Geht aber wirklich nur um das Grundprinzip, habe halt die Erfahrung dass durch solche Registryeinträge oftmals weitaus mehr als nur das Gewünschte verändert wird. EDIT: Wobei gut, der Registrywert stinkt nach ausschließlich HTML-Hilfe, ich nehme es wieder zurück.

Ich will einfach nur, dass eine Hilfe angezeigt wird. Warum man da einen Key ändern muss, weiß wahrscheinlich nur MS. Was habe ich dann aber für Möglichkeiten? Wieder auf HLP Dateien umsteigen wollte ich dann eigentlich nicht.

Oder wie sieht es bei euch aus? Wenn ihr neue Programm schreibt, nutzt ihr dann noch HLP Dateien oder nur noch CHM Dateien?

rollstuhlfahrer 19. Aug 2010 18:58

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Du könntest aber auch die Hilfedatei in ein temporäres Verzeichnis kopieren lassen und von dort anzeigen. Das müsste eigentlich gehen. Dann kannst du bei CHM-Dateien bleiben

Bernhard

zeras 19. Aug 2010 19:02

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1043520)
Du könntest aber auch die Hilfedatei in ein temporäres Verzeichnis kopieren lassen und von dort anzeigen. Das müsste eigentlich gehen. Dann kannst du bei CHM-Dateien bleiben

Bernhard

Das wäre natürlich auch eine Idee.
Ich werde mir das dieser Tage mal durch den Kopf gehen lassen und dann weiter testen.

Bernhard Geyer 19. Aug 2010 19:07

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von zeras (Beitrag 1043507)
Dann wäre das ja ein "Super Rückschritt". Bei einem älteren Programm hatte ich noch die alten Helpdateien genutzt, nun wollte ich alles "neu" machen und dann kommt es zu dem Problem.

Alte Hilfedateien gehen noch weniger. Jedenfalls bei meinem Vista können sie gar nicht mehr gestartet werden wenn Sie auf Netzlaufwerk liegen.

Es gibt auch die Möglichkeit gezielt die eigenen Hilfedateien per Registry als sicher zu markieren.

Mittlerweile machen wir es aber so das wir die Datei ins %AppData%-Verzeichnis kopieren und von dort starten. Beachte aber das diese nicht mit Shell-Kopierfunktionen geschieht da das Kopieren mittels Windows Explorer einen vermerk auf die unsichere Quelle der Datei hinterlegt so das die Datei auch lokal kopiert nicht geht.

zeras 19. Aug 2010 19:11

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1043527)
Zitat:

Zitat von zeras (Beitrag 1043507)
Dann wäre das ja ein "Super Rückschritt". Bei einem älteren Programm hatte ich noch die alten Helpdateien genutzt, nun wollte ich alles "neu" machen und dann kommt es zu dem Problem.

Alte Hilfedateien gehen noch weniger. Jedenfalls bei meinem Vista können sie gar nicht mehr gestartet werden wenn Sie auf Netzlaufwerk liegen.

Es gibt auch die Möglichkeit gezielt die eigenen Hilfedateien per Registry als sicher zu markieren.

Mittlerweile machen wir es aber so das wir die Datei ins %AppData%-Verzeichnis kopieren und von dort starten. Beachte aber das diese nicht mit Shell-Kopierfunktionen geschieht da das Kopieren mittels Windows Explorer einen vermerk auf die unsichere Quelle der Datei hinterlegt so das die Datei auch lokal kopiert nicht geht.

Danke für den Tipp, dass es mit den HLP Dateien auch nicht geht.
Offensichtlich muss man hier richtige "Klimmzüge" machen, damit ein User eine Hilfe bekommt.
Ist denn unter Windows gar nichts mehr sicher?

Bernhard Geyer 19. Aug 2010 21:39

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von zeras (Beitrag 1043531)
Danke für den Tipp, dass es mit den HLP Dateien auch nicht geht.
Offensichtlich muss man hier richtige "Klimmzüge" machen, damit ein User eine Hilfe bekommt.

Es gibt doch Lösungen (Registry-Einträge etc.). Entsprechende Installer machen das fast automatisch.

Zitat:

Zitat von zeras (Beitrag 1043531)
Ist denn unter Windows gar nichts mehr sicher?

Das Gegenteil ist doch der Fall. Jetzt ist es ganz sicher :-)
Das Problem ist doch oft das MS immer versucht alles mögliche in etwas zu integrieren wofür es nicht vorgehen war ohne sich gleich vernünftig Gedanken zu machen welche Sicherheitsproblem es geben könnte. Das CHM-Format ist ein Beispiel dafür. Alles mögliche wurde realisiert bis man darauf gekommen ist das dadurch alle mögliche Schadsoftware ebenfalls auf den Rechner kommt.

Nils_13 20. Aug 2010 11:06

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Wenn das aus dem temporären Verzeichnis heraus geht, dann mach es so, Registry-Hacks halte ich für sehr fragwürdig. Außerdem lasse ich alle Zugriffe auf die Registry überwachen, ich denke viele andere tun das auch, und im Zweifelsfall - gerade bei Installationen - verweigere ich die Registryänderung. Man sollte immer das Minimum nutzen, viel zu viele Dinge laufen über die Registry, deshalb ist sie auch so verschlackt. Hängt alles davon ab was Dein Programm genau macht und wo es installiert werden soll, aber man sollte sich lieber einmal einen Weg suchen der überall laufen sollte und nicht immer wieder nachbessern.

DeddyH 20. Aug 2010 15:03

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Wenn es sich um eine kleine *.chm handelt, kann man sie ruhig kopieren. Bei 20 MB Dateigröße würde ich mir das allerdings überlegen.

[edit] Hier ist der entsprechende Artikel zum Problem: http://support.microsoft.com/kb/892675/EN-US/ [/edit]

Bernhard Geyer 20. Aug 2010 15:22

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von DeddyH (Beitrag 1043801)
Wenn es sich um eine kleine *.chm handelt, kann man sie ruhig kopieren. Bei 20 MB Dateigröße würde ich mir das allerdings überlegen.

Wieso? Falls wirklich kopieren zu lang dauert:

1, Fortschritsdialog mit "Hilfe wird vorbereitet" (kennt man ja noch gut aus *.hlp-Zeiten)
2, Kopieren in Thread bei Anwendungsstart

Zusätzlich noch Check ob kopieren nötig oder aktuelle lokal Datei vorliegt.

DeddyH 20. Aug 2010 15:27

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Solange kein "super Tool" auf dem Rechner läuft, das regelmäßig das Temp-Verzeichnis leert, finde ich das auch noch hinnehmbar, da ja nur einmal kopiert wird. Allerdings hat man dann auch nur die Hilfedatei, die beim Kopieren aktuell war und bekommt von neuen Funktionen dann u.U. nichts mit. Aber wer (außer uns) aktualisiert schon ständig seine Hilfe?

rollstuhlfahrer 20. Aug 2010 16:13

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Das Kopieren wenn nötig beinhaltet meiner Meinung auch zu schauen, ob die vorhandene Hilfe überhaupt noch aktuell ist. Dies kann man z.B. per MD5-Checksumme machen. So bekommt man auch immer die neuste Hilfe auf den Rechner kopiert.

Ich finde, ein Programm sollte nach Benutzung alle temporären Dateien selbst löschen. So läuft das TEMP-Verzeichnis auch nicht über oder füllt sich langsam mit immer mehr Daten an. Demnach müsste das Programm beim Schließen auch die Hilfedatei löschen. So braucht man die Hilfe auch nur dann zu prüfen, wenn sie wirklich gebraucht wird und hat die Festplattenkapazitäten für anderes frei.

Zu dem "super Tool": Unter Linux hast du beim nächsten Hochfahren deines Rechners ein absolut sauberes /tmp-Verzeichnis. So sollte das Windows von Haus aus auch machen. Temporär ist nun mal temporär und nicht permanent.

Bernhard

DeddyH 20. Aug 2010 16:20

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
IMO sollte Windows Vieles machen, was es nicht tut ;)

zeras 19. Sep 2010 09:57

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1043527)

Mittlerweile machen wir es aber so das wir die Datei ins %AppData%-Verzeichnis kopieren und von dort starten. Beachte aber das diese nicht mit Shell-Kopierfunktionen geschieht da das Kopieren mittels Windows Explorer einen vermerk auf die unsichere Quelle der Datei hinterlegt so das die Datei auch lokal kopiert nicht geht.

Dann müßte ich das ja mit einem Stream lösen können, erst vom Netzwerk laden und dann lokal speichern. Dann geht mir aber das Erstellungsdatum verloren. Das müßte ich mir dann nachträglich wieder setzen.
Oder gibt es eine andere Idee, die Hilfe vom Netzwerk zu laden, ohne Shell zu benutzen, dabei aber das Datum OK ist?

mkinzler 19. Sep 2010 10:03

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
Einfach den ADS löschen

rollstuhlfahrer 20. Sep 2010 13:18

AW: Hilfedateien lokal OK, übers Netz Fehlermeldung
 
CopyFile() hinterlässt auch keine Spuren, da du ja damit die Shell umgehst.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz