AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

NT-Service auf 64bit Windows

Ein Thema von kuba · begonnen am 16. Jun 2010 · letzter Beitrag vom 22. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 16:42
Hallo,

ich habe einen NT-Service programmiert und mache damit das da:

Delphi-Quellcode:
    ZeroMemory( @si, sizeof(si) );
    si.lpDesktop := PChar('WinSta0\Default');
    si.cb := sizeof(si);
    ZeroMemory( @pi, sizeof(pi) );
    ReadDir(PW);
    command:=PW+'\remote.exe';

    try
      if not CreateProcessAsUser(
        token,
        nil,
        PChar(command),
        nil,
        nil,
        False,
        CREATE_NEW_CONSOLE, //cf,
        nil,
        PChar(ExtractFilePath(command)),
        si,
        pi )then exit;
    except
      exit;
    end;
Unter Windows X86 funktioniert das einwandfrei, mit Windows 64Bit scheint es nicht mehr zu funktionieren (habe nur zeitweise eine Testumgebung).

Was muss ich machen damit es auch mit Windows 64Bit funktioniert ?

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 16:44
Wo scheitert es denn?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 16:46
remote.exe startet nicht, taucht nicht im Taskmanager auf.

ups, ich sehe gerade dass ich den falschen Auszug gepostet habe:

So sieht's aus:
Delphi-Quellcode:
ReadDir(PW3);
ShellExecute(0,Nil,'remote.exe','',PCHar(PW3), SW_HIDE);
Also shellexecute tuts bei 64Bit nicht, warum ?

kuba
Stefan Kubatzki
E=mc2

Geändert von kuba (16. Jun 2010 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 17:15
Ich entwickle hier mir Server2008R2 und hatte noch nie Probleme mit Shellaufrufen.

Ist remote.exe im Suchpfad?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 17:27
Ich entwickle hier mir Server2008R2 und hatte noch nie Probleme mit Shellaufrufen.

Ist remote.exe im Suchpfad?
Gute Frage, kann ich erst überprüfen wenn ich wieder bei meiner Testumgebung bin.

Dieser Code scheint auch Probleme zu machen:

Delphi-Quellcode:
        ReadDir(PW1);
        PW2 := 'watchdog.exe';
        PW3 := '';
    try
        CmdLine := Format('"%s%s" %s',[IncludeTrailingPathDelimiter(PW1),PW2,PW3]);
        FillChar(SI, SizeOf(SI), #0);
        FillChar(PI, SizeOf(PI), #0);
        SI.cb := SizeOf(SI);
        SI.lpDesktop := PChar('Winsta0\Default');
        SI.dwFlags := STARTF_USESHOWWINDOW;
        SI.wShowWindow := SW_SHOWDEFAULT;
        ProcCreated := CreateProcessAsUser(
                            hUserToken,
                            nil,
                            PChar(CmdLine), // pointer to command line string
                            nil, // pointer to process security attributes
                            nil, // pointer to thread security attributes
                            True, // handle inheritance
                            0, // creation flags
                            nil, // pointer to new environment block
                            nil, // pointer to current directory name
                            SI, // STARTUPINFO
                            PI); // PROCESS_INFORMATION

        if ProcCreated then
        begin
            CloseHandle(PI.hProcess);
            CloseHandle(PI.hThread);
        end
        else
            ShowMessage('Error ' + SysErrorMessage(GetLastError));
    finally
        CloseHandle(hUserToken);
    end;
Meinst du mit Suchpfad PATH ? Ich starte das Programm doch mit Pfadangabe, oder könnte es an den Rechten des Programmverzeichnis liegen ? Der Dienst als solcher funktioniert einwandfrei, nur die Programme starten nicht in der 64Bit Umgebung.

Ich installiere den Service mit einem Setup (InnoSetup), folgende Zeile habe ich eingefügt damit ich im Programmverzeichnis auf ini-Dateien zugreifen kann:

Delphi-Quellcode:
[Dirs]
Name: "{app}"; Permissions: authusers-full;

Muss ich bei Windows 64Bit irgendwelche Verzeichnisrechte setzten ?

kuba
Stefan Kubatzki
E=mc2

Geändert von kuba (16. Jun 2010 um 17:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 17:59
Das ShowMessage wirst du nie sehen, da es ab Windows Vista keine interaktiven Dienste mehr gibt. Schreib besser eine Logdatei.

Den Remarks Abschnitt im Windows SDK hast du gelesen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 18:02
Das ShowMessage wirst du nie sehen, da es ab Windows Vista keine interaktiven Dienste mehr gibt. Schreib besser eine Logdatei.

Den Remarks Abschnitt im Windows SDK hast du gelesen?
Das Showmessage werde ich nicht sehen, schon klar. Trotzdem, Danke für den Tip mit der Log-Datei. Irgendwo sollte man schon sehen können wenn ein Fehler passiert.

Remarks Abschnitt ?? Hab ich nicht gelesen, wo ???

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 18:05
Irgendwo sollte man schon sehen können wenn ein Fehler passiert.
Sollte man, tut man aber eben in einen Dienst so nicht.

Zitat:
Remarks Abschnitt ?? Hab ich nicht gelesen, wo ???
Im Windows SDK oder eben online im MSDN.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 18:13
Zitat:
Remarks Abschnitt ?? Hab ich nicht gelesen, wo ???
Im Windows SDK oder eben online im MSDN.
Hier ?

Solange mir meine Testumgebung nicht zur Verfügung steht kann ich wohl nur mutmaßen.

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: NT-Service auf 64bit Windows

  Alt 16. Jun 2010, 18:14
Nein, hier: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 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