WinCC dll und Windows registrieren

Martin3G

Level-1
Beiträge
61
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

und zwar moechte ich zwei dll-Dateien und eine vbs-Datei unter Windows registrieren, um sie im Web Navigator Client nutzen zu koennen. Leider wirft mir die RegSvr32.exe immer einen Fehler.

zb.
""D:\dll\Speichern_Daten.dll" is not an executable file and no registration helper is registered for this file type."

Ich taetige die Eingabe ueber das Kommandozeilenfenster (cmd) mit Admin rechten, mein Befehl lautet "regsvr32 D:\dll\Speichern_Daten.dll".

Die Dateien liegen unter dem angegebenen Pfad.
Die dll-Dateien habe ich mit Hilfe eines C Compilers erstell. Sprich einfachen den Code eines Global Script C Programms in die den Compiler gepackt und diesen dann unter dll gespeichert.
Die dll-Dateien laufen auf dem Server.
Betriebssystem Server: Windows Server 2012 r2
Betriebssystem Client: Windows 7 Prof.

Werden noch zusaetzliche Befehle im zu veroeffentlichen Script benoetigt?
Oder muessen noch weitere Massnahmen getroffen werden, das diese erkannt werden?

vielen Dank schon mal im voraus


mfg Martin3G
 
Warum willst du die dll denn überhaupt registrieren? Ist das eine COM-dll?

Ist die dll als 32 oder 64 Bit erstellt worden? Unter 64 Bit Windows gibt es soweit ich weiß auch zwei Versionen von regsrv32, eine im System32 und eine in SysWOW64 (Windows 7).
Das verwirrende bei Microsoft ist, dass in SysWOW64 die 32 Bit-Version liegt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi Thomas,

damit ich mit Hilfe des Internet Explorers darauf zugreifen bzw. die gleiche Funktion wie auf dem Server ausführen kann.
Ob sie jetzt 32 oder 64 bit, weiss ich nicht genau. Wo kann ich das nachsehen?
Hab sie unter Windows 7 mit Hilfe des Visual Studio 2017 erstellt.
Hatte die beiden dll-Dateien auch schon jeweils in das System32 und SysWoW64 gepackt und sie dann versucht aufzurufen.
Dann kam aber bei beiden auch eine Fehlermeldung:

Das Modul ist moeglicherweise nicht mit der Version von Windows kompatibel, die Sie ausfuehren moechten. Ueberpruefen Sie, ob das Modul mit einer x86-Version (32bit) oder x64-Version (64bit) von regsvr32.exe kompatibel ist.


mfg Martin3G
 
Wenn du das VS unter 64 Bit verwendest und an den Einstellungen nichts geändert hast, dann ist es vermutlich als 64 Bit Anwendung übersetzt worden.
Soweit ich weiß ist WinCC aber noch eine 32 Bit Anwendung. Funktioniert die dll denn grundsätzlich?

Es ist nur selten notwendig eine dll zu registrieren. Das brauchst du nur wenn eine Anwendung auf deine dll über die Klassen-ID zugreifen will (z.B. bei einem COM-Objekt). Dann steht die Klassen-ID in der Registry und dort steht dann der Ort der dll. Ich habe das selber noch nie verwendet.

Ob das für den Webserver speziell ist kann ich nicht sagen. Ansonsten muss deine dll nur an einem Ort liegen damit der Prozess der die dll dynamisch laden soll, diese auch findet.
 
Die dll Anwendung Funktioniert soweit auf dem Wincc Server.
Die dll-Bibliothek liegt auf dem Client unter dem gleichen Pfad wie er es auch auf dem Server tut.
Der Siemens-Support meinte, dass man die dll-Datei zusaetzlich noch unter Windows registrieren muesse.
Um diese auch mit dem Internet Explorer nutzen zu können.
Ich nehme mal an das der Client Zugriff über Internet Explorer eine COM-Anwendung ist.

mfg Martin3G
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir Dependency Walker geladen, dieser soll Anzeigen um welche Version es sich Handelt.
Ob 32 oder 64.
Leider Zeigt er an das es sich weder um eine 32 noch um eine 64 bit variante handelt:confused:.

Also kann es sein das ich beim erstellen der dll einen Fehler gemacht habe?
Und er sie jetzt nicht zuordnen kann.
Wie kann ich festlegen das es sich um eine 32 bit Anwendung handeln soll?


mfg Martin3G
 
in den Compile Einstellungen deines Visual Studio
da kannst du auch gleich schauen für welche plattform und welche .net er das erzeugen soll, nicht das du da das nächste problemchen bekommst
 
Das heißt, der WinCC-Webnavigator Client soll die dll laden und Funktionen ausführen? Hat Siemens gesagt das geht?
Denn dann würde der Internet Explorer bzw. das Siemens Active-X Plugin ja diese dll laden müssen. Ob das so gewollt bzw. erlaubt ist, vor allem aus sicherheitstechnischer Sicht, fraglich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

auf was muss ich den im allgemeinen achten das die dll unter Wincc 7.4 Sp1 Up2 läuft bzw. dessen Client?
Was genau meinst du mit Plattform und .net?

Sorry für meine Unwissenheit :rolleyes:


mfg Martin3G
 
Ich dachte im WinCC auf dem Server funktioniert deine dll?

Vielleicht hat Siemens da was falsch verstanden, und meinten du willst auf dem Webnavigator Client eine .Net oder Activex/OCY dll verwenden. Also dann so etwas wie das BPC Plugin welches man ebenfalls im Webnavigator installieren kann um BPC verwenden zu können. Die haben zwar auch die Dateiendung dll, aber das sind zwei völlig verschiedene Paar Schuhe.
 
Auf dem WinCC Server Funktioniert der Zugriff auf die dll.
Die Funktion wird über ein Button getriggert, welche die Global Script C auslöst, welche den dll Link enthält.

Ich hab den Sachverhalt genau dargelegt.

Zwei Global Script C Dateien waren zu groß um sie über den Publisher auf dem Server zu verteilen.
Deshalb hab ich diese Dateien ausgelagert.
Aussage durch den Support:

Wenn ich die Bibliotheken auf den Client benutzen moechte muesste ich diese unter Windows bekannt machen.
Mit Hilfe der regsvr32.exe

Ob er das jetzt falsch verstanden hat, kann ich nicht beurteilen, dafür fehlt mir einfach das Wissen.

werde das Ausprobieren und dann sehen........

Also erstmal eine vernuenftige dll erstellen, die auch von Windows als diese erkannt wird.



mfg Martin3G
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn deine dll auf dem Server funktioniert, dann ist es eine "vernünftige" also funktionierende dll.

Wenn du eine dll mittels regsrv32 registrieren willst, dann muss diese aber auch die entsprechenden Funktionen DllRegisterServer und DllUnregisterServer exportieren und diese auch mit Leben füllen. Aber wenn diese fehlen, dann gibt es eine entsprechende eindeutige Fehlermeldung (Einsprungpunkt für DllRegisterServer nicht gefunden). Sind diese bei dir vorhanden, wenn ja, was steht dort drin?

Lässt sich denn nicht die zu große Funktion in mehrere kleine zerlegen? Bevor ich mir das mit der dll auf den Clients antue, würde ich da doch erst einmal Arbeit investieren. Denn die Lösung mit der extra dll ist ja auch von der Wartung her nicht gerade die optimale Variante.
 
Die beiden Funktionen sind nicht enthalten, hättest du da ein Beispiel?
Da hast du natürlich Recht mit dem verkleinern der Dateien.

Weiss aber nicht wie ich das anstellen soll.
In den beiden Funktionen werden einmal eine Text Datei und eine Dat Datei geöffnet und mit Prozess-Daten beschrieben.
Mein Problem dabei ist das ich nicht weiss, wie ich das Programm an der richtigen Stelle weiter Schreiben lasse.

mfg Martin3G
 
Beispiele lassen sich finden, hier z.B.:
https://msdn.microsoft.com/de-de/library/windows/desktop/dd376682(v=vs.85).aspx

Ich habe das wie gesagt selber noch nie verwenden müssen, darum kann ich da nicht groß weiterhelfen. Aber vermutlich kann man da nicht einfach per Copy&Paste irgendwas hineinkopieren, sondern man muss wissen was und warum da etwas gemacht wird.

Darum würde ich vermuten, du kommst schneller ans Ziel die bestehende Funktion so umzuschreiben, so dass sie direkt in WinCC funktioniert. Solange du nicht auf eine Beschränkung der Funktionen in WinCC Webnavigator triffst, müsste das doch möglich sein. fopen ist zumindest im Webnavigator aufgeführt. Ob und wie Dateioperationen dann im Internet Explorer funktionieren, ist dann das nächste Problem. Ich glaube ich würde das erstmal grundsätzlich an einem einfachen Testprojekt ausprobieren, d.h. Textdatei öffnen, einlesen und wie auch immer verarbeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok das werde ich morgen so ausprobieren

Ersteinmal grundsaetzlich Testen ob die Funktion im Explorer funktioniert, um dann Abzuwegen welchen Weg ich weiter verfolge.

Ich danke dir für deine Hilfe

gebe dann Rueckmeldung

mfg Martin3G
 
Hallo Martin,

kann es nicht sein das du die Dateinamen nur in einen Pfad speichern musst der in den Umgebunsvariablen von Windows unter path angegeben ist?

Evtl ein Berechtigungsproblem hast du nicht? Am Server als Admin angemeldet und am Rechner als User?

Mit freundlichen Grüßen Tia
 
Hi Tia,

ich weiss nicht genau wie du das meinst mit path, die dll Dateien liegen unter dem selben Link wie auch unter dem Server.
Du meinst ich muss sie noch anders unter Windows registrieren?
Wie?
Am Server bin ich als Admin angemeldet und beim Client als ganz normaler User bzw. dessen rechte die ich unter seinem Profil festgelegt habe.


mfg Martin3G
 
Zurück
Oben