Toon posts:

[Delphi/IIS] DLL kan niet bij de registry?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een COM+ in-process server DLL in Delphi5 aan 't schrijven die vanuit ASP onder IIS wordt aangesproken.
Die DLL verzorgt de database connectie en bevat alle business logic, zodat de ASP-kant zich alleen met de GUI hoeft te bemoeien.
Werkt allemaal prima, maar ik kom 1 probleempje tegen waar ik niet 1-2-3 uitkom:

Z'n settings (ADO connection string, etc.) worden opgeslagen in de registry, onder HKLM\SOFTWARE\... Voor 't uitlezen gebruik ik gewoon de TRegistry class, ongeveer zo (uit m'n hoofd):
code:
1
2
3
4
5
6
7
8
9
with TRegistry.Create do try
  RootKey := HKEY_LOCAL_MACHINE;
  if OpenKeyReadOnly(HC_ROOT) then begin
    // lees de verschillende entries
    // HC_ROOT is een const string die verwijst naar de key
  end;
finally
  Free;
end;

Werkt uit de kunst onder Win2K Server/IIS5 en Win2K Pro/PWS en waar dan ook met een Windows client, maar onder NT4/IIS4 lukt die OpenKeyReadOnly niet (levert False op).
NT4/IIS4 niet ondersteunen is geen optie, en uitwijken naar een ini-file in WINNT\System32 wil ik liever niet (al was 't alleen maar uit cosmetisch oogpunt, die directory wordt toch al teveel vervuild).

Iemand dit al eerder bij de hakken gehad, en daar een oplossing voor gevonden? Zo ja, dan hou ik me aanbevolen! :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14-09 13:13
Wat vind GetLastError() d'r van?

Verwijderd

Topicstarter
Op dinsdag 12 februari 2002 22:44 schreef Soultaker het volgende:
Wat vind GetLastError() d'r van?
Goede vraag, en daar zat ik ook net aan te denken.
OpenKeyReadOnly geeft alleen maar True terug wanneer de RegOpenKeyEx API call ERROR_SUCCESS (vreemde benaming eigenlijk :) ) teruggeeft.
Ik kan dat pas morgen bekijken, wanneer ik weer de beschikking heb over een NT4/IIS4 machine.

Verwijderd

Topicstarter
Grmpfh...

De "oplossing" was veel simpeler: OpenKeyReadOnly mag ook zonder problemen onder NT4/IIS4, maar in de registry werd nog verwezen naar de oude (hernoemde) versie van de DLL, die gewoon OpenKey gebruikte.

Motto: DLLs die via DllRegisterServer aan de registry worden bekend gemaakt niet hernoemen, want dan worden ook de registry entries hierop aangepast.