Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Application Error 0xc0000142 (https://www.delphipraxis.net/95665-application-error-0xc0000142.html)

trashcandesign 11. Jul 2007 10:05


Application Error 0xc0000142
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

wir haben für unser Programm einen Server-Dienst und dafür ein kleines Konfigurationstoll geschrieben.
Das Konfigurationstool macht eigentlich nicht wirklich viel mehr, als eine Konfigurations Ini-Datei zu erstellen und den Dienst zu starten bzw. zu beenden.

Bei etwas über 100 Kunden funktioniert das auch alles wunderbar, aber einer bekommt die Fehlermeldung 0xc0000142 (Bild siehe Anhang)

Soweit mir bekannt setzt der Kunde einen Windows-Server 2000 mit SP4 ein, der eigentlich immer auf dem aktuellsten Stand gehalten wird.

Wie könnte man das Problem beheben (mal abgesehen von Neuinstallation des Rechners und anderen Rechner nehmen)?
Wir haben das Programm auch schon deinstalliert und wieder neu installiert, aber der Fehler kommt weiterhin.

Relicted 11. Jul 2007 10:13

Re: Application Error 0xc0000142
 
hmm... naja ohne mehr infos wird man da nicht viel machen können...
theoretisch wäre etwas quellcode nicht ganz übel... die meldung alleine hat so viel aussagekraft wie "es ist ein sack reis umgefallen" - man könnte vermuten dass es in china passiert ist aber vielleicht auch doch in der arktis? nobody knows :-)

gruß
reli

Relicted 11. Jul 2007 10:17

Re: Application Error 0xc0000142
 
achja die brüder google helfen auch manchmal recht gut :-)

für leute mit bilderfetisch:
http://www.opssys.com/instantkb/article.aspx?id=10176

und einmal ohne:
http://www.tech-pro.net/howto_015.html

gruß
reli

trashcandesign 11. Jul 2007 10:33

Re: Application Error 0xc0000142
 
Hi reli,

bei Google hab ich schon gesucht, die beiden Fehler, die du mir gelinkt hast sind die 0xc0000022 und nicht 0xc0000142, deswegen dachte ich nicht, dass das passt, werds aber mit dem Kunden mal durch spielen.

So, hier n bisl Quältext, aber ehrlich gesagt denke ich nicht, dass das einen weiter bringt *g*:

Delphi-Quellcode:
procedure TFrmServerConfig.FormCreate(Sender: TObject);
begin
  if FileExists(GetDataPath+'System.fdb') then
  begin
    DMSystem.dbSystemZeos.Database := GetDataPath+'System.fdb';
    try
      DMSystem.dbSystemZeos.Connect;
    except
      Application.Terminate;
    end;
  end
  else
    Application.Terminate;

  MPGetLanguage(); // Sprache aus System.fdb auslesen (füllt Array aSprache)
  MPSetLanguage(Self); //Verpasst den Komponenten die richtigen Text/Caption Propertys

  slPlugins      := TStringList.Create;

  bActivated     := false;
  sLicenseHolder := aSprache[1379];
  iMaxUser       := 0;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.FormShow(Sender: TObject);
var
  prgInfo: TmpllPrgInfo;
  bridgeone: mybridge1;
  tsplugin: IMPPluginInterface;
  sMPServerINI : string;
  ConfigINi : TIniFile;
  sDatenPfad : string;
begin


  TForm(Sender).Left:= (Screen.Width - TForm(Sender).Width)div 2;
  TForm(Sender).Top:= ((Screen.Height -TForm(Sender).Height) div 2)-14;


  bridgeone := mybridge1.Create;
  mplicense := TMPLicense.Create(bridgeone, mybridge2.Create());
  prginfo.prgtyp := cPrg_MPFEUER;
  prginfo.prglite := 0;

  if (bridgeone.getField4 <> '') and (StrToInt(bridgeone.getField4) > cUser_Einzel) and (StrtoInt(bridgeone.getField4) < cUser_Max) then
  begin
    prginfo.prguser := StrToInt(bridgeone.getField4);
  end
  else
    prginfo.prguser := cUser_3;

  sMPServerINI := GetDataPath+'MPServer.ini';
  ConfigIni    := TIniFile.Create(sMPServerINI);
  sDatenpfad   := ConfigIni.ReadString('UNC_PATH', 'Datapath', '');
  if COPY(sDatenpfad, Length(sDatenpfad), 1) <> '\' then
    sDatenpfad := sDatenpfad+'\';

   tsplugin := MPPluginLoaderLib.LoadIt(sDatenPfad+'Plugins\');


  prginfo.prgversion := cVers_30;

  if tsplugin <> nil then
  begin
    if tsplugin.getPluginType = pTManufacturer then
    begin
      prginfo.prgPlugin := cPlugin_plugin;
      slPlugins.Add(tsplugin.getPluginName+' (V '+tsplugin.getPluginVersion+')');
    end
    else
      prgInfo.prgPlugin := cPlugin_no;
  end
  else
    prgInfo.prgPlugin := cPlugin_no;


  prginfo.prgAVL := false;
  mplicense.setProgrammVersion(prginfo);

  mplicense.setdefaultLicense(pDefaultLicense);

  btnClients.Click;
  btnUebersicht.Click;
end;
Delphi-Quellcode:
function GetDataPath(): string;
var
    rRegisrty: TRegistry;
  begin
    rRegisrty := TRegistry.Create(KEY_READ);
    rRegisrty.RootKey := HKEY_LOCAL_MACHINE;

      if rRegisrty.KeyExists('SOFTWARE\MP-SOFT-4-U\' + pPrgname + '\Services') then
      begin

        rRegisrty.OpenKey('SOFTWARE\MP-SOFT-4-U\' + pPrgname + '\Services', false);
        Result := rRegisrty.ReadString('AppDataPath');
      end
      else begin
        Result := '';
      end;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.btnClientsClick(Sender: TObject);
type
  PPInAddr = ^PInAddr;
var
  ConfigIni      : TIniFile;
  sMPServerINI   : string;
  WSA            : TWSAData;
  PHEn           : PHostEnt;
  Addr           : PPInAddr;
  ConnectionStream: TMemoryStream;
  sConnectionAnswer : string;

begin

  lblBereich.Caption := '['+TJvNavPanelButton(Sender).Caption+']';
  SetScrollBox(sbClients);


  if not ServiceRunning(nil, PAnsiChar('MPService')) then
  begin
    lblClients.Caption := aSprache[1485];
    lblAktClients.Visible := false;
    exit;
  end;

     MPServerConnect;
    GetConnections();

    ConnectionThread       := TConnectionThread.Create(True);
    with ConnectionThread do
    begin
      Priority         := tpNormal;
      FreeOnTerminate  := True;
      ConnectionClient := MPServerTCPClient;
      Resume;
    end;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.btnUebersichtClick(Sender: TObject);
begin
  try
    ConnectionThread.Suspend;
  except
  end;

  lblBereich.Caption := '['+btnUebersicht.Caption+']';
  SetScrollBox(sbStart);
  if ServiceRunning(nil, PChar('MPService')) then
  begin
    lblServiceStatus.Caption := aSprache[1462];
    btnServiceStatus.Caption := aSprache[1461];
    pnlServerStatus.Color    := $00A2D896;

    MPServerConnect;
    GetServerInformation;

    lblStatusLizenznehmerWert.Caption := sLicenseHolder;
    if bActivated then
      lblStatusLizenzWert.Caption      := aSprache[1492]+' - '+IntToStr(iMaxUser)+' '+aSprache[772]
    else
      lblStatusLizenzWert.Caption    := aSprache[1495]+' ('+IntToStr(iDemoDays)+'/30) - '+IntToStr(iMaxUser)+' '+aSprache[772]
  end
  else
  begin
    lblServiceStatus.Caption := aSprache[1463];
    btnServiceStatus.Caption := aSprache[1460];
    pnlServerStatus.Color    := $005E5DE3;

    lblStatusLizenznehmerWert.Caption := '';
    lblStatusLizenzWert.Caption := '';
  end;

  lbPlugins.Items.Clear;

  if slPlugins.Count = 0 then
    lbPlugins.Items.Add(aSprache[1516])
  else
    lbPlugins.Items := slPlugins;



  try
    ConnectionThread.Resume;
  except
  end;
end;
Und hier noch der Thread:

Delphi-Quellcode:
procedure TConnectionThread.Execute;
var
  sReadLine: string;
begin
  with ConnectionClient.IOHandler do
  begin
    while Connected do
    begin
      sReadLine := ReadLn;
      if StringDecrypt(sReadLine) = 'ConnectionChange' then
      begin
        Synchronize(GetConnections);
      end;
    end;
  end;
end;

procedure TConnectionThread.GetConnections;
begin
  FrmServerConfig.GetConnections;
end;
Wenn noch was benötigt wird poste ich auch gerne die gesamte pas, aber wie schon gesagt denke ich nicht, dass das was Hilft, da es ja bei all den anderen Kunden einwandfrei funktioniert.
Ich denke eigentlich eher, dass es was auch Windows-Seite ist, hab aber im Netz bisher nur was gefunden von wegen DLL-Problem, bzw. Problem bei Scheduled Tasks oder der cdm.exe.
Das alles wurde dann immer mit dem nächsten SP o.ä. gelöst, also auch nicht wirklich befriedigend.

Relicted 11. Jul 2007 10:41

Re: Application Error 0xc0000142
 
hmmm also am code finde ich nix auffälliges... aber ich denke die meldung ansich sollte sich nicht in der "0xc0000142"-nummer unterscheiden... ich hab halt einfach mal nach dem fehler allgemein geschaut... das sieht einfach nur nach nem speicherverweis aus und vielleicht greift dien prog nur auf ne andere datei oder what ever zu...
unter welchen rechten läuft denn dein programm? vielleicht liegts daran.. hmm naja dem kunden einfach sagen "versuch das... das könnte helfen" kann vielleicht schon ausreichen. vondaher weitergeben und hoffen.. wenn es ned klappt wird sich dein kunde scho melden :-p

gruß
reli

mirage228 11. Jul 2007 10:44

Re: Application Error 0xc0000142
 
Hi,

Vielleicht hilft dir ja die Lösung aus diesem Thread (etwas weiter unten):

http://www.delphipraxis.net/internal...ght=0xc0000142

mfG
mirage228

DP-Maintenance 11. Jul 2007 11:50

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.

Muetze1 12. Jul 2007 09:49

Re: Application Error 0xc0000142
 
1. Das 0xCxxxxxxxxxx deutet darauf hin, dass diese Exception im Kernel geschmissen wurde. Also irgendwo in einem WinAPI Aufruf.
2. Dieser Code ist der gleiche, welcher auch bei einer STOP Condition ausgegeben wird. Dazu kenne ich einen link: STOP Messages
3. Der Fehler 0xC0000142 steht für "DLL Initialization Failure". Somit auch schon ein Hinweis mehr.

trashcandesign 25. Jul 2007 10:26

Re: Application Error 0xc0000142
 
Danke für die Hinweise,

muss mal schauen, welche DLLs geladen werden. Ist hier für mich nur leider nicht so einfach nachzuvollziehen und immer den Kunden mit einbinden ist ja leider auch nicht so optimal.

Mittlerweile hat mir auch ein anderer Kunde das Problem gemeldet. Bei ihm ging es ursprünglich und seit dem er die neuesten Microsoft Patches eingespielt hat kommt bei ihm der gleiche Fehler.
Er setzt auch einen Win 2k Server mit SP4 ein.

Ist euch da was bekannt, dass die bei den letzten Patches irgendwas verballert, oder was "sicherer" gemacht haben?

kalmi01 25. Jul 2007 12:09

Re: Application Error 0xc0000142
 
Hi,

ich hatte bei einigen PC's das gleiche Problem, da hatte die Neuinstallation der
GraKa-Software (NVIDIA) geholfen.
Nur einer blieb resistent.
Dem hab ichs aber auch beigebogen, in dem ich Hardware-OpenGL abgeschaltet habe.
Was aber eigentlich nicht der korrekte Lösungsansatz sein sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Seite 1 von 2  1 2      

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