Zum Inhalt springen

XspYroX

Mitglieder
  • Gesamte Inhalte

    185
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von XspYroX

  1. Habe jetzt: process.Account = ServiceAccount.User; process.Username = "admin"; process.Password = "password"; Auf das Laufwerk und die datei hat jeder und adminostratoren vollzugriff. Habe jetzt in der main und onStart stehen: System.IO.File.Delete("D:\\test.txt"); Die datei d:\test.txt wird aber absolut nicht gelöscht. Irgendwas stimmt da doch nicht, oder? Ich installiere den dienst ganz normal per "InstallUtil.exe programmSvr.exe". Im Eventlog kommen keine Fehlermeldungen mehr, daher kann ich auch nicht sagen, woran es dieses mal liegt :/ In der onStart steht jetzt noch: System.Diagnostics.Trace.AutoFlush = true; System.Diagnostics.Trace.Indent(); Hab ich etwas vergessen einzufügren, weshalb im eventlog nichts mehr angezeigt wird?
  2. Ok... Ich bekomme in de Ereignisanzeige: Frameworkversion: v4.0.30319 Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet. Ausnahmeinformationen: System.UnauthorizedAccessException Stapel: bei System.IO.__Error.WinIOError(Int32, System.String) bei System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean) bei System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions) bei System.IO.StreamWriter.CreateFile(System.String, Boolean) bei System.IO.StreamWriter..ctor(System.String, Boolean, System.Text.Encoding, Int32) bei System.IO.StreamWriter..ctor(System.String) bei alfaSecuSvr.service.Main() bzw. "Pfad des fehlerhaften Moduls: C:\Windows\syswow64\KERNELBASE.dll" und P2: 1.0.0.0 P3: 50eae2c2 P4: mscorlib P5: 4.0.0.0 P6: 4e181ae3 P7: 3fd1 P8: 13c P9: System.UnauthorizedAccess P10: Aber ich bin Admin o_o Bei der installations-routine im code habe ich: process.Account = ServiceAccount.LocalSystem; Zumindestens weiß ich jetzt, dass es nen Fehler gibt und nicht, dass der code einfach nicht angetastet wird :/ Nächte Frage ist natürlich: Wie bekomme ich den Fehler weg? Ich hab auch testweise versucht auf D: zu schreiben, selbes Problem. Rechte sind auf D "jeder:full" :/ edit: Habe jetzt testweise "SystemSounds.Beep.Play();" anstelle der write-sachen eingetragen. Es kommt kein beep, aber auch kein fehler in der ereignisanzeige. ....
  3. Ich hab mich wohl zusehr in die Thematik vertieft. Ist ja schon unangenehm, wie ich grad sowas simples übersehe x.x aber ja, so lässt sich das perfekt lösen. Danke euch allen
  4. Au mann, da hat es bei mir wohl ausgesetzt. Dass ich da net selbst drauf komme xD Hat funktioniert. Jetzt noch die Frage... Kann ich mit EINFACHEN mitteln die letzte Zeile in der txt wieder löschen lassen? Also... Sodass ich zu beginn ein enter-zeichen in die txt haue, diese dann auslese, und danach das enter-zeichen wieder entferne? Wenn nicht, ist es auch nicht tragisch. Gut wäre es trotzdem, wenn das möglich wäre Aber schonmal dickes Danke an euch alle
  5. Hmmm... die txt, die ich auslesen möchte, wird automatisch genertiert. Daher habe ich darauf keinen einfluss. Leider wird die letzte zeile eben nicht mit einem enter "bestätigt".... Kann man das trotzdem irgendwie hinkriegen? Wenn das nicht geht, muss ich wohl auf Visual C umsteigen. Da sollte sowas ja machbar sein. Häte nur lieber ne batch gehabt, da kann man einfacher kleinigkeiten dran ändern :/
  6. Oh, sorry Ich habe die Schreibrechte von network service nicht geprüft, da ich eben auch den lokalen admin und den systemadmin ausprobiert habe. es hat nie funktioniert und ich denke mal, dass zumindestens der Systemadmin rechte auf C haben sollte, oder? Ich bin heute nicht an dem Rechner. an dem ich programmiere. Aber ich werde es morgen früh direkt einmal testen (ich nehm dann einfach D und setz vorher die rechte auf "allow-all") und dann Bescheid geben LG XspYroX edit: Kann man eigentlich irgendwie einstellen, dass der dienst ne windows-fehlermeldung ausgibt, wenn ein fehler auftritt? Kommt mir so komisch vor, dass der dienst keinerlei fehler anzeigt, sondern einfach nur stumm "läuft". Gibts da nen schalter, mit dem man, ohne manuell in eine datei schreiben zu lassen, fehler ausgeben oder anzeigen lassen kann?
  7. Super, der code klappt fast. Einziges Problem: Die letzte Zeile aus der text-datei wird nicht eingelesen. Wenn ich 4 zeilen in der txt habe, werden exakt 3 ausgaben gemacht bzw. nach der 3. ausgabe kommt nur eine leerzeile und das war es dann. Kann man das auch noch fixen? LG XspYroX
  8. Habs getestet. Meine main() sieht jetzt so aus: ergebnis: nichts. Kein inhalt in der datei, wenn diese schon vorhanden war; keine datei, wenn diese vorher nicht existiert hat. edit: Wenn ich den selben code System.IO.StreamWriter myFile = new System.IO.StreamWriter("C:\\test.txt"); myFile.Write("wurde installiert"); myFile.Close(); in den installer-bereich kopiere, passiert auch nichts.
  9. Die 2 "\\" sind zum escapen. Hat nichts mit Dienstprogrammierung zu tun, sondern allgemein mit Programmierung
  10. Jepp. Er gibt nur "str" ohne die Anführungszeichen aus. Dafür muss es doch nen einfachen weg geben. Kann doch net sein, dass man an sowas scheitert o_O
  11. Konnte es doch jetzt schon testen: Habe die Main() aus der onStart augerufen: Kein effekt. Habe das Konto von Netzwerkkonto auf systemkonto geändert: nichts. Habe das konto auf einen real existierenden user geändert (admin-rechte): nichts. Installiert wird der service richtig. Nur wenn ich ihn starte, passiert eben nichts, außer dass er als "läuft" angezeigt wird Weitere Vorschläge?
  12. Werde es morgen früh ausprobieren. Also soll ich einfach die main() in der OnStart aufrufen?
  13. Hi Ich hab da ein Problem, das ich ums verrecken nicht gelöst bekomme. In einer txt-datei stehen viele zeilen text. Ich möchte die erste zeile überspringen und ab der 2. zeile brauche ich eine variable, die immer die letzten 5 Zeichen beinhaltet. Bisher habe ich folgenden Code: @echo off for /f "tokens=* delims=" %%i in ('findstr /n $ D:\temp.txt') do @( echo %%i pause ) Den Teilstring würde ich normalerweise mit folgendem Code bekommen: echo %var:~-5% Nur klappt das mit der %%i-Variable nicht. Frage also: Wie bekomme ich am elegantesten einen Teilstring aus %%i? Würde mich über Antworten sehr freuen, habe schon das ganze Internet durchsucht und nichts passendes gefunden ^^" Viele Grüße XspYroX
  14. Ich könnte mir vorstellen, dass eventuell der Bootsektor nicht ganz stimmt. Obwohl dann käme vermutlich kein Bluescreen sondern nen Black-White-Screen :/ Du kannst mir Acronis ein Image der alten Festplatte erstellen. Diesem Image kansnt du mit Acronis weitere Treiber "mitgeben", da müsstest du dann die neuen Mainboardtreiber reinpacken. Dann dieses Image wieder auf deine Festplatte packen, und nochmal booten. Probiers mal und geb Rückmeldung
  15. Also kann man schlussendlich sagen: 1. Der Vertrag ist gültig und wenn du darauf bestehen würdest, würden dir die 30 Tage zustehen 2. Du bist mit der Firma so zufrieden, dass du der Firma entgegenkommst und den Vertrag auf 26 Tage ändern lässt Korrekt?
  16. Hi. Ich bin dabei einen Service mit C# zu programmieren. Den Servide als solchen habe ich fertig. Habe ihn auch schon testweise installiert und deinstalliert. Allerdings tut der Service momentan einfach nichts. Folgenden Code habe ish bisher: using System.ComponentModel; using System.IO; using System.Windows.Forms; namespace dienstname { public class service : ServiceBase { static void Main() { service.Run(new service()); System.IO.File.Delete("c:\\text.txt"); } protected override void OnStart(string[] args) { base.OnStart(args); System.IO.File.Delete("c:\\1.txt"); /*MessageBox.Show("service gestartet");*/ } protected override void OnContinue() { base.OnContinue(); } protected override void OnStop() { /*MessageBox.Show("stoppe service...");*/ System.IO.File.Delete("c:\\2.txt"); base.OnStop(); System.IO.File.Delete("c:\\3.txt"); /*MessageBox.Show("service gestoppt");*/ } } [RunInstaller(true)] public class Installation : Installer { private ServiceInstaller service; private ServiceProcessInstaller process; public Installation() { service = new ServiceInstaller(); process = new ServiceProcessInstaller(); service.ServiceName = "dienstname; service.DisplayName = "dienstname Service"; service.Description = "beschreibung"; process.Account = ServiceAccount.NetworkService; Installers.Add(process); Installers.Add(service); } } } Wie ihr sehen könnt, habe ich ein wenig experimentiert. Ich habe schon vorher auf c:\ ein paar leere text-dokumente angelegt. Diese soll der dienst beim starten bzw. auch beim beenden löschen. Allerdings passiert dies nicht. So wie ich das verstanden habe, wird, nachdem der dienst gestartet wurde, die main() gestartet. Aber wieso wird dann die test.txt auf c:\ nicht gelöscht? Habe es zu testzwecken auch schon mit ner messagebox probiert (siehe auskommentierten code). Hab ich nen Brett vorm Kopf oder was ist hier das Problem? ^^" LG XspYroX
  17. Hi Ich würde gerne innerhalb einer VB-Form ein bzw. mehrere Livestreams anzeigen lassen. Format ist egal, kann MPEG sein aber auch avi o.ä.. Die Livestreams werden über netzwerk gestreamt (intern im LAN) und kommen von Webcams, welche per USB an Rechnern angeschlossen sind. Frage: Wie stelle ich das am beste an? Mit solchen Dingen habe ich mich (leider) noch nie richtig beschäftigt und im Internet finde finden sich da auch nur seltsame Ideen (habe gelesen, dass jemand dafür eine Picturebox benutz hat...). Jemand eine Idee? :/ LG XspYroX
  18. Hmmm... Tutorials scheint es dazu wohl wenige im Internet zu geben :/ Wäre es ein großer aufwand, hier den C++-Code zu posten anstelle von Pseudocode? Wie gesagt: Außer dies eine Function nicht weiterzuleiten, soll die Wrapper-DLL nichts machen ^^"" Danke schonmal ._. Wenn ich mehr Zeit habe, sollte ich mich echt mal genauer mit DLLs beschäftigen >_< LG XspYroX
  19. Klingt einfacherals es für mich ist Hab jetzt gerade die DLL-Datei mit dem Tool "ollydbg" geöffnet und sehe ähnliches Brain**** wie bei "WDASM" (hatte WDASM davor schonmal probiert) So wie ich das sehe, finden sich dort aber nicht die klartext-function-names wie in meinem Fall "bringToFocus", oder? Oder bin ich nur gerade mit dem ganzen Code überfordert? edit: Wenn ich die DLL mit "ollydbg" öffnen will kommt die Meldung "File blabla.dll is a Dynamic Link Library. Windows can't execute DLLs directly. Launch LOADDLL.EXE? Hab da immer ja angeklickt, aber ... lädt er dann überhaupt die DLL? Oder lädt er nur den Code der LOADDLL.EXE? LG XspYroX
  20. Gerne Also: Ich nutze ein MediPlayer-Plugin der Firma UMedia (Unreal Media Player plugin , ist ein Active-X Plugin) zum abgreifen und darstellen von Live-Streams im Browser-Fenster (nur im InternetExplorer, drumherum ist PERL). Das Plugin aktualisiert sich zu bestimmten Momenten (entweder trigger ich es per Hand oder der Stream bricht ab. Bei Abbruch versucht das Plugin in bestimmten Zeitabständen selbst die Wiederherstellung der Verbindung). Allerdings wird bei jeder aktualisierung automatisch (durch die DLL, steht nirgendwo als Config-Option) der Windows-Focus auf das IE-Frame gesetzt. D.h. wenn ich gerade nebenbei nen Text tippe, dann fleigt der Focus ständig aus Word raus auf das IE-Frame. Generell Focus-Änderungen beim IE oder allen Ective-X Plugins zu deaktivieren/verhindern habe ich erfolglos versucht. Viele andere haben dieses Problem, aber nirgendwo gibt es eine Lösung (für Windows 7). Ich habe die DLL in Vosual Studio geladen und dort wurden mir die vorhandenen Funktionen derDLLL angezeigt (nur die Funktionen. weder code noch war etwas zu editieren). Dort habe ich die "BringToFocus()" (oder so ähnlich) gefunden, die laut Beschreibung eben das macht, nämlich den Z-Index festzulegen. Wenn ich es also schaffe, diese Function "funktionslos" zu machen, dann sollte der Focus nicht mehr springen sondern auf dem aktuell ausgewählten Element bleiben Falsl du natürlich einen anderen weg kennst, wie man dieses Active-X Plugin am Focusändern hindert, dann nur her damit. Würdest mir damit nen Haufen Arbeit und Ärger ersparen LG XspYroX
  21. @Guybrush Treepwood: Hehe, ich spreche nur gebrochen Binärcode mit Hex-Akzent Ne, Spass beseite... Also..hmm... dann müsste ich wohl ne Wrapper-DLL schreiben. Frage: Da ich ja nur eine einzige Funktion weiterleiten möchte, sollte die Wrapper-DLL ja eigentlich recht einfach aussehen, oder? Also sowas wie: (pseudocode) if [function.name == "spezielle_funktion"] then ( // nothing ) else ( call eigentliche_dll.function.name ) Kann ich sowas auch ohne Kenntnisse im DLL-Programmieren hinbekommen? Kenne mich "nur" mit VB, C (commandbox-ebene), C++(commandbox-ebene) und PHP uns.w. aus. Oder hast du vielleicht eine tutorial-seite, die mir da weiterhilft? Wie gesagt.... ich woltle das eigentlich hinbekommen, ohne das ganze drumherum über DLL-Programmierung zu erlernen. Bin gerade mit anderen Programmier-Sachen beschäftigt ^^" Dankööö schonmal LG XspYroX
  22. hi. Eine Frage an euch Profis Ich habe eine DLL-Datei, aus der ich eine bestimmte Funktion entfernen möchte bzw. diese Funktion soll einfach "nichts" mehr tun. Wie bekomme ich das am einfachsten hin, ohne den eigentlichen Quellcode zu haben? Kann ich mit irgend einem Editor die datei öffnen und an die gewünschte stelle springen? Hab bisher mit DLLs noch keine wirklichen erfahrungen gehabt :/ Hab schon Reverse-Engineering-Tools ausprobiert, aber... geht das nicht irgendwie einfacher, wenn ich schon genau weiß, was die DLL nicht mehr machen soll und wie die spezielle Funktion heißt, die geändert werden soll? Oder kann ich irgendwie einen Ramen um diese DLL programmieren, der diesen funktionsaufruf abfängt und bearbeitet? Freue mich über jede Hilfe, die ich kriegen kann LG XspYroX
  23. Naja... Ich hab das ganze konstrukt in einem try-Catch Baum: Private Function checkIP(ByVal ip As String) If (My.Computer.Network.Ping(ip)) Then Try Dim ps As System.Diagnostics.Process Application.DoEvents() For Each ps In System.Diagnostics.Process.GetProcesses(ip) Application.DoEvents() If isWhitelisted(ps.ProcessName.ToString) = 0 Then tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) If check_log.Checked = True Then My.Computer.FileSystem.WriteAllText("log.txt", vbCrLf & Now() & " -> " & ps.MachineName & ": " & ps.ProcessName.ToString, True) End If funde_counter = funde_counter + 1 End If Next tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> OK") tb.AppendText(vbCrLf) Catch ex2 As Exception tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> Fehler / Dienst nicht erreichbar") tb.AppendText(vbCrLf) 'Shell("sc \\" & ip & " stop remoteregistry") 'Shell("sc \\" & ip & " start remoteregistry") End Try Else If check_dontlogoffline.Checked = False Then tb.AppendText("prüfe IP " & ip) tb.AppendText(" -> Rechner nicht erreichbar") tb.AppendText(vbCrLf) End If End If Return 0 End Function Wenn ich jetzt die Zeile tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) in eine meiner "Versuche" aus dem vorherigen Post ändere (habs jetzt mit "tbWhite.AppendText(ps.MainModule.FileName.ToString)" probiert), dann springt er in den in den Catch-Zweig und gibt "Fehler / Dienst nicht erreichbar" aus. Im tbWhite-Fenster steht dann auch nichts bzw. ein leerzeichen oder so. Das bedeutet, dass die Änderung, die ich an dieser einen Zeile vorgenommen habe, einen Fehler provizieren. Wenn ich mir die ex2-Expression ausgeben lasse (per msgbox), dann kam bis eben keine Meldung. JETZT habe ich es erneut getestet und sehe folgende Message: "Das Featurer wird nicht auf Remotecomputern unterstützt.". Hmmm.... Aber das kann ich mir nicht vorstellen. Man kann Prozesse starten, auslesen und editieren. da wird man doch wohl auch an den Pfad rankommen, oder? Muss vielleicht noch ein anderer Dienst als der Remoteregistry-Dienst laufen? hmmmmm..... Ich könnte natürlich per psexec auf dem remote-pc einen tasklist-befehl ausführen lassen, mir dann die ausgabe in eine txt-datei schreiben lassen, diese dann einlesen und auswerten lassen. aber 1. ist das kompliziert und 2. extrem fehleranfällig. Also: welchen Weg kann man bei VB einschlagen? LG spYro
  24. Also erstmal danke Allerdings muss ich gestehen, dass ich das mit dem MainModule auch schon probiert habe, allerdings keinen Code hinbekommen habe, der mir dem Pfad anzeigt tbWhite.AppendText(ps.MainModule.ModuleName) tbWhite.AppendText(ps.MainModule) Sowas z.b. klappt nicht. Hab auch schon diverse andere Kombinationen ausprobiert x_x Ich find auch per goolgle keine guten Beispiele, die mir da weiterhelfen könnten :/ Kannst du mir vielleicht diese eine Zeile beschreiben? Also wie ich Code-Technisch einbringe? Hab da wohl irgendwie nen Brett vorm Kopf ^^"" Danke schonmal :nett: edit: Hab jetzt auch noch folgenes ausprobiert: tbWhite.AppendText(ps.MainModule.FileName.ToString) klappt aber leider auch net
  25. Hi Hab da ein Problem und hoffe, dass ihr mir das weiterhelfen könnt Ich möchte gerne mein Netzwerk scannen und die laufenden Prozesse der Rechner dort im Netzwerk auflisten. ABER: Es sollen auch die Pfade der Prozesse angezeigt werden. Mein Code-Snippet sieht so aus: Dim ps As System.Diagnostics.Process For Each ps In System.Diagnostics.Process.GetProcesses(ip) tbWhite.AppendText(ps.MachineName & ": " & ps.ProcessName.ToString & " (" & Now() & ")" & vbCrLf) Es wird also die IP des Rechners angezeigt (ps.machinename), dann der Prozessname und dann ein Zeitstempel. Ich möchte mir aber auch den genauen Pfad des Prozesses anzeigen lassen. Wie kriege ich das am besten hin? Bin für jede Antwort dankbar PS: Falls ihr mir sagen könnt, wie ich auf selben weg noch den Rechner-Namen der jeweiligen IP herausbekomme, dann seid ihr echt göttergleich :cool: LG XspYroX

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...