Zum Inhalt springen

hapke

Mitglieder
  • Gesamte Inhalte

    9
  • Benutzer seit

  • Letzter Besuch

Beiträge von hapke

  1. Das dll Projekt wird auch wirklich als Dll-Projekt kompiliert?

    Soweit ich das beurteilen kann schon. Ich bekomme zumindest als Ergebnis beim Projekt erstellen meine DLL-Datei. Oder muss ich da noch mehr machen?

    Ich würde an der stelle lieber mit Verweißen arbeiten.

    Meine Überlegung bei dem dynamischen einbinden war, die DLL Dateien nur einzubinden, wenn ich die Classe / die Methoden daraus auch wirklich benötige.

    Ich habe also mein Switch und dann soll bei den entsprechenden Parametern die Aktion X ausgeführt werden. Für die Aktion X, gibt es eine X.dll die die Classe mit den Methoden etc enthält. Wenn die Aktion Z ausgeführt werden soll, wird die X.dll nicht benötigt.

    Von daher sehe ich es als unnütz, diese Datei beim Aufruf der Anwendung trotzdem zu laden.

    Nachzuvollziehen oder übersehe ich etwas grundlegendes?

    Gruß Hapke

  2. Schön guten Tag,

    ich habe ein Problem eine selbst erstellte DLL-Datei einzubinden und zu verwenden. Der Name der Datei ist ganz einfach "dll.dll". Das ganze Projekt dient im Moment nur zum testen der Funktion bevor es dann richtig los geht. Nur damit sich hier niemand wundert, warum die Funktion nur einen Wert zurück gibt.

    Entwicklungsumgebung ist das Microsoft Visual Studio 2008 in der Sprache C#

    Code meiner DLL-Datei:

    namespace dll
    
    {
    
        public class dll
    
        {
    
            static public int test(int h)
    
            {
    
                return h;
    
            }
    
        }
    
    }
    Code meiner kleinen Exe-Datei:
    using System;
    
    using System.Windows.Forms;
    
    using System.Runtime.InteropServices;
    
    
    namespace dllTest
    
    {
    
        public partial class Form1 : Form
    
        {
    
            [DllImport("dll.dll", EntryPoint="test")]
    
            static extern public int test(int h);
    
    
            public Form1()
    
            {
    
                InitializeComponent();
    
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
    
            {
    
                int retval = test(333);
    
                MessageBox.Show("Wert: " + retval.ToString() + "");
    
            }
    
        }
    
    }
    
    

    Fehlermeldung:

    System.EntryPointNotFoundException wurde nicht behandelt.

    Message="Der Einstiegspunkt test wurde nicht in der DLL dll.dll gefunden."

    Ich habe auch schon versucht meine dll.dll mit dem DebendencyWalker zu öffnen. Leider kam dabei auch nicht sehr viel heraus.

    Warning: At least one delay-load dependency module was not found.

    Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

    Wobei ich mir auch nicht so sicher bin, ob sich die Meldung wirklich auf meine Datei bezieht.

    Ich bin auf jeden Fall ziemlich ratlos und hoffe das mir hier jemand helfen kann.

  3. dein code compiliert ohne fehler und warnungen?
    Ja

    dein dienst heisst wirklich "ServiceWarcher"?
    Ups nein er heißt ServiceWatcher :)

    hast du versucht, den dienst sowohl über net start, als auch über MMC zu starten?
    habe ihn über net start gestartet und über die verwaltung (glaube auch mmc abgekürzt bin mir aber nicht ganz sicher)

    wo behandelst du eigentlich die Winsock-einstellungen wie den port, auf dem gelauscht wird?
    Die habe ich direkt im Control angegeben. LocalPort und RemotePort: 8080 / Protokoll: sckTCPProtocol

    du läufst in den ERROR_SERVICE_REQUEST_TIMEOUT, d.h. dein dienst benötigt zu lange. ich würde versuchen, den Timer erst nach starten des dienstes in den status Enabled zu versetzen.
    Funktioniert leider auch noch nicht. Habe das Timer1.Enabled = True unter NTService1_Start gesetzt. Leider ohne Erfolg.

    Auch durch erstellen eines Threads bekomme ich den Dienst nicht gestartet.

    In der Verwaltung unter Dienste steht er generell immer als "Wird gestartet" wenn ich versuche ihn zu starten und er auf die Fehlermeldung läuft. Danach nur noch zu beenden über den Taskmanager.

    Timo

  4. Danke erstmal für die bisherigen Antworten.

    Habe jetzt eine normale Windows Anwendung erstellt und diese mit Hilfe dieses Workshops => vb@rchiv · Dienst mit VB erstellen

    kann ich die Anwendung jetzt als Dienst installieren.

    Jetzt habe ich jedoch das Problem das ich die Anwendung als Dienst nicht starten kann

    Meldung:

    "Der Dienst 'ServiceWarcher' auf "Lokaler Computer" konnte nicht gestartet werden.

    Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung"

    Unten einmal mein aktueller Source Code.

    Das Prüfen der Systemzeit habe ich jetzt mit einem Timer gelöst wie oben genannt. Zeit Interwall auf 45 Sekunden und in einer Variable das aktuelle Datum, welches beim ersten Aufrufen dann in der Variable gespeichert wird und für den Tag dann nicht mehr ausgeführt wird.

    Wie gesagt jetzt erstmal das Problem mit dem Starten des Dienstes.

    Danke Timo

    
    
    Public Class Form1
    
        Dim last_date As Date
    
        Dim filenameService As String = "C:/ServiceStatus.log"
    
        Dim filenameEvents As String = "C:/ServiceEvents.log"
    
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            Select Case Command()
    
                Case "-install"
    
                    NTService1.Interactive = True
    
                    If NTService1.Install Then
    
                        MsgBox("Dienst erfolgreich installiert")
    
                    Else
    
                        MsgBox("Dienst konnte nicht installiert werden")
    
                    End If
    
                    Application.Exit()
    
                Case "-uninstall"
    
    
                    If NTService1.Uninstall Then
    
                        MsgBox("Dienst erfolgreich deinstalliert")
    
                    Else
    
                        MsgBox("Dienst konnte nicht deinstalliert werden")
    
                    End If
    
                    Application.Exit()
    
                Case "-debug"
    
                    NTService1.Debug = True
    
                Case Is <> ""
    
                    MsgBox("Invalid command option")
    
                    Application.Exit()
    
                Case Else
    
                    Timer1.Enabled = True
    
                    NTService1.StartService()
    
    
                    Winsock1.Listen()
    
    
                    Log(filenameService, "Dienst wurde gestartet")
    
            End Select
    
        End Sub
    
    
        Private Sub NTService1_Continue(ByVal sender As Object, ByVal e As AxNTService._DNtSvcEvents_ContinueEvent) Handles NTService1.Continue
    
            Log(filenameService, "Dienst wurde fortgesetzt")
    
            Winsock1.Listen()
    
            Timer1.Enabled = True
    
        End Sub
    
    
        Private Sub NTService1_Pause(ByVal sender As Object, ByVal e As AxNTService._DNtSvcEvents_PauseEvent) Handles NTService1.Pause
    
            Log(filenameService, "Dienst wurde angehalten")
    
            Winsock1.Close()
    
            Timer1.Enabled = False
    
        End Sub
    
    
        Private Sub NTService1_Start(ByVal sender As Object, ByVal e As AxNTService._DNtSvcEvents_StartEvent) Handles NTService1.Start
    
            Log(filenameService, "Dienst wurde gestartet")
    
            Winsock1.Listen()
    
            Timer1.Enabled = True
    
        End Sub
    
    
        Private Sub NTService1_Stop(ByVal sender As Object, ByVal e As System.EventArgs) Handles NTService1.Stop
    
            Log(filenameService, "Dienst wurde gestoppt")
    
            Winsock1.Close()
    
            Timer1.Enabled = False
    
        End Sub
    
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            If last_date <> Date.Today Then
    
                'If ((Now.Hour = 11) And (Now.Minute <> 23) And (Now.Second < 45)) Then
    
                If ((Now.Hour = 4) And (Now.Minute = 0) And (Now.Second < 45)) Then
    
                    timerCalled()
    
                    last_date = Date.Today
    
                End If
    
            End If
    
        End Sub
    
    
        Function timerCalled() As Object
    
            Try
    
                Log(filenameEvents, "Timer Event - Dienst(e) neugestartet")
    
            Catch ex As Exception
    
                Log(filenameEvents, "Fehler: Timer Event - Dienst(e) neugestartet")
    
            End Try
    
        End Function
    
    
        Function Log(ByVal datei As String, ByVal info As String)
    
            Dim logDatei As New System.IO.StreamWriter(datei, True)
    
            logDatei.WriteLine(Now & " - " & info)
    
            logDatei.Close()
    
        End Function
    
    
        Private Sub Winsock1_DataArrival1(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles Winsock1.DataArrival
    
            Dim str As String = ""
    
            Winsock1.GetData(str)
    
    
            Dim str_code As String = str.Substring(0, 2)
    
    
            Dim str_name As String = ""
    
            If str.Length <> 2 Then
    
                str_name = str.Substring(3, str.Length - 3)
    
            End If
    
    
            Select Case str_code
    
                Case "/1" 'Disconnect
    
                    System.Threading.Thread.Sleep(5000)
    
                    Winsock1.Close()
    
                    Log(filenameEvents, "Verbindung geschlossen")
    
                    Winsock1.Listen()
    
    
                Case "/2" 'Starten
    
                    Log(filenameEvents, "Dienst Starten (" & str_name & ")")
    
    
                Case "/3" 'Beenden
    
                    Log(filenameEvents, "Dienst Beenden (" & str_name & ")")
    
    
                Case "/4" 'Pause
    
                    Log(filenameEvents, "Dienst Pause (" & str_name & ")")
    
    
                Case "/5" 'Restarte
    
                    Log(filenameEvents, "Dienst Restarte (" & str_name & ")")
    
            End Select
    
        End Sub
    
    
        Private Sub Winsock1_ConnectionRequest1(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles Winsock1.ConnectionRequest
    
            Winsock1.Close()
    
            Winsock1.Accept(e.requestID)
    
            Log(filenameService, "Neue Verbindung Aufgebaut")
    
        End Sub
    
    End Class
    
    
    

  5. Halli Hallo,

    habe vor einen Windows Dienst zu entwickeln.

    Aufgaben sollen sein zu einer bestimmten Uhrzeit und wenn von einem anderen Rechner ein Signal gesendet wird eine bestimmte Funktion auszuführen.

    Bisherige Überlegungen:

    Das Signal von außen ist ein String der via Winsock Verbindung gesendet wird.

    Problem: Wie plaziert man in einem Dienst ein Window Control? Bzw in wiefern ist es möglich dieses auf ein User Control zu plazieren und von dort aufzurufen?

    Die andere Frage die ich mir auch noch stelle ist, wie man die Systemzeit zu einer bestimmten Zeit "abfängt" vielleicht ohne einen Timer am laufen zu haben der alle 60 Sekunden prüft ob die Uhrzeit erreicht ist um Resourcen zu sparen!?

    Könnt ihr mir helfen? Habt ihr Ideen?

    Danke schonmal

    Timo

  6. Bedeutet das, dass Du den Dienst unter den SYSTEM-Benutzer-Rechten laufen lassen willst, aber Ändern-Rechte auf den Schlüssel HKCU benötigst?

    Ja genau. Nur bekomme ich diesen Zugriff nicht.

    Es müsste auch geprüft werden, ob überhaupt ein Benutzer angemeldet ist, da der Dienst ja schon gestartet wird auch wenn sich noch kein Benutzer angemeldet hat. (Laut meinen Informationen)

    Das sollte aber nicht das Problem sein und darum geht es auch nicht.

    Es geht mir nur darum das ich über den Dienst der unter System läuft keinen Zugriff bekomme und wie ich es hinbekommen kann doch Zugriff zu bekommen.

    "Meines Wissens hast Du als angemeldeter Benutzer immer Vollzugriff auf den HKCU-Schlüssel, da hier ja einige benutzerbezogene Einstellungen gespeichert werden müssen."

    Klar als angemeldeter Benutzer schon nur läuft der Dienst ja nicht über das angemeldete Benutzerkonto...

    Gruß Timo

  7. Hallo, ich bin einen eigenen Dienst in VB.Net am programmieren, welcher unter System ausgeführt wird. Nun ist es notwendig, das ich auf die Registry unter CurrentUser unter dem aktuell angemeldeten Benutzer zugreife und dort etwas lesen, ändern, schreiben kann.

    Könnt Ihr mir da weiterhelfen?

    Habe überlegt das ganze unter einem anderen Benutzeraccount auszuführen, diese Methode fällt jedoch weg da der Dienst später auf mehreren Rechnern ausgeführt werden soll und diese in verschiedenen Städten stehen und nicht immer dieselben Benutzeraccounts und Passwörter haben. Sollte jetzt zum Beispiel ein Passwort geändert werden ist es nicht möglich hinzufahren und das ganze beim Dienst zu ändern, als Beispiel.

    Habt Ihr Ideen wie man das Problem lösen kann?

    Ich hoffe ich habe mich verständlich ausgedrückt und nicht alles falsch rüber gebracht.

    Vielen Dank.

    Timo

  8. Hallo, ich würde gerne mit VB alle im Netzwerk verfügbaren Drucker auflisten mit der dazugehörigen IP und Namen, Treiber anzeigen lassen.

    Google jetzt seit einem Tag mit nem Kollegen zusammen doch wir kommen leider nicht voran.

    Haben auf der Seite http://www.vbapihelpline.de/ref/funck.php4?Func=EnumPrinters&Letter=Drucker etwas wie wir finden hilfreiches gefunden leider funktioniert das nur mit den lokalen Druckern und nicht mit den Netzwerkdruckern.

    Könnt Ihr helfen? VB6 oder VB .net ist egal haben hier beides.. (Link oben ist VB6)

    Danke schonmal

    Timo

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...