Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hallo,
hänge mal das Projekt wieder komplett an, wie im 1. Posting. Heiko |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Liste der Anhänge anzeigen (Anzahl: 1)
gesagt getan. :stupid:
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hallo,
eine Warnung EExtemporaneousMumblings Zeile 668 (CallBackFunction) Variable SD möglicherweise nicht initialisiert Habe hier kein AD, kann es also nicht testen. Aber was soll dieses ganze RefCount Zeug ? Bei jedem Zugriff auf ADsMgr wird der Zähler hochgezählt ? (Hat aber nichts mit dem Problem zu tun) Heiko |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Zitat:
Zitat:
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
@hoika, konntest du evt. schon etwas testen?
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Ich hatte da noch die Vermutung, dass es mit der activeds.dll / .tlb version was zu tun haben könnte?! habe mal alle Windows Updates gemacht, die Datei wurde jedoch nicht aktualisiert. Meine Version: "5.1.2600.5512 (xpsp.080413-2113)"... naja, wieder mal auf dem Holzweg... konnte noch jemand mein Beispiel Testen?
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hallo,
noch einer, der in TypLib-Falle tapst :wink: Es ist mir schon im April 2009 aufgefallen das einige deklarationen/definitionen nicht MSDN-Komform sind. Du wirs also nicht umhin kommen es per Hand zu überprüfen. Für IDirectorySearch sei die die Arbeit abgenommen:
Delphi-Quellcode:
Dann funktioniert auch die Suche (wieder).
// *********************************************************************//
// Schnittstelle: IDirectorySearch // Flags: (0) // GUID: {109BA8EC-92F0-11D0-A790-00C04FD8D5A8} // *********************************************************************// IDirectorySearch = interface(IUnknown) ['{109BA8EC-92F0-11D0-A790-00C04FD8D5A8}'] function SetSearchPreference(var pSearchPrefs: ads_searchpref_info; dwNumPrefs: LongWord): HResult; stdcall; function ExecuteSearch(pszSearchFilter: PWideChar; pAttributeNames: PWideChar; dwNumberAttributes: LongWord; out phSearchResult: THandle): HResult; stdcall; function AbandonSearch(var phSearchResult: THandle): HResult; stdcall; function GetFirstRow(var hSearchResult: THandle): HResult; stdcall; function GetNextRow(hSearchResult: THandle): HResult; stdcall; function GetPreviousRow(var hSearchResult: THandle): HResult; stdcall; function GetNextColumnName(var hSearchHandle: THandle; out ppszColumnName: PWideChar): HResult; stdcall; function GetColumn(hSearchResult: THandle; szColumnName: PWideChar; out pSearchColumn: ads_search_column): HResult; stdcall; function FreeColumn(var pSearchColumn: ads_search_column): HResult; stdcall; function CloseSearchHandle(var hSearchResult: THandle): HResult; stdcall; end; Viele Grüße |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hallo alter Mann... Erstmal Danke das du dich auch dem Problem angenommen hast...
nur leider ist das nicht mein eigentliches Problem. Ursprünglich ist mein Problem: Unerklärbare Zugriffsverletzungen... Zum Beispiel endet mein Programm auch nach dieser Methode in einer unerklärbaren Zugriffsverletzung...
Delphi-Quellcode:
So wird die Funktion aufgerufen:
function TEADSObject.MoveTo(AdsPathObject, AdsPathNewContainer: string): Boolean;
var container: IADsContainer; obj: IADs; hr: Integer; r: Boolean; begin result := true; try if SUCCEEDED(ADSGetObject(AdsPathObject, IID_IADs, obj)) then begin if SUCCEEDED(ADSGetObject(AdsPathNewContainer, IID_IADsContainer, container)) then container.MoveHere(obj.ADsPath, 'cn='+ExtractValue(obj.ADsPath)) else result := false; end else result := false; except result := false; end; end;
Delphi-Quellcode:
Ich geh schon fast wieder die Wände hoch... das Problem besteht schon seit Wochen und ich kriegs einfach nicht raus... !!!
...
if AdsMgr.ADSObject.MoveTo(ADSPATH_OF_CURRENT_USER, EdContainerPath.Text) then txt := '- Benutzer wurde erfolgreich nach "'+EdContainerPath.Text+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG else txt := '<!> Benutzer konnte nicht verschoben werden <!>' + #13; ... Es scheint, als ob die Function "MoveTo" etwas nicht richtig frei gibt oder so.... ich schnalls nicht... Wo kann das her kommen??? Und gerade Witzig daran ist, der Benutzer wird tatsächlich korrekt verschoben... Wenn ich die Funktion in einer DUMMY-Funktion aufrufe erhalte ich auch KEINE Zugriffsverletzung...
Delphi-Quellcode:
Sowas gibts doch gar nicht?!
function TFrameUsers.ChangeAccountName: Boolean;
begin result := AdsMgr.ADSUsers.ChangeAccountName(ADSPATH_OF_CURRENT_USER, EdSAMAccountName.Text); end; Hmmm..... Hab grad nochmal was rausgekriegt: Wenn in der Zeile wo die Zugriffsverletzung auftritt nur Text steht, also ohne EdContainerPath.Text... dann gibts dort keine Zugriffsverletzung... Also scheints fast so, dass die Funktion auf dem Parameter sitzt... Was muss ich bloss ändern...?? |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hallo,
Zitat:
Was passiert denn bei der folgenden Änderung?
Delphi-Quellcode:
und was passiert hier?
Var
sContainerPath : String; ... sContainerPath := EdContainerPath.Text; if AdsMgr.ADSObject.MoveTo(ADSPATH_OF_CURRENT_USER, sContainerPath) then txt := '- Benutzer wurde erfolgreich nach "'+EdContainerPath.Text+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG jetzt weg? else txt := '<!> Benutzer konnte nicht verschoben werden <!>' + #13; ...
Delphi-Quellcode:
und einen hab' ich noch:
Var
sContainerPath : String; ... sContainerPath := EdContainerPath.Text; if AdsMgr.ADSObject.MoveTo(ADSPATH_OF_CURRENT_USER, sContainerPath) then txt := '- Benutzer wurde erfolgreich nach "'+sContainerPath+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG nicht weg? else txt := '<!> Benutzer konnte nicht verschoben werden <!>' + #13; ...
Delphi-Quellcode:
und noch einen:
Var
sContainerPath : String; ... sContainerPath := EdContainerPath.Text; if AdsMgr.ADSObject.MoveTo(ADSPATH_OF_CURRENT_USER, EdContainerPath.Text) then txt := '- Benutzer wurde erfolgreich nach "'+sContainerPath+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG jetzt weg? else txt := '<!> Benutzer konnte nicht verschoben werden <!>' + #13; ... ShowMessage(EdContainerPath.Text); // <--- ZUGRIFFSVERLETZUNG jetzt hier?
Delphi-Quellcode:
Irgendwie meine ich mich daran erinnern zu können, dass auf Variabeln, die im Zusammenhang mit ADSObject benutzt wurden, nachher nicht mehr zugegriffen werden konnten, ohne auf eine Zugriffsverletzung zu stoßen.
Var
sContainerPath : String; ... sContainerPath := EdContainerPath.Text; if AdsMgr.ADSObject.MoveTo(ADSPATH_OF_CURRENT_USER, sContainerPath) then txt := '- Benutzer wurde erfolgreich nach "'+EdContainerPath.Text+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG jetzt weg? else txt := '<!> Benutzer konnte nicht verschoben werden <!>' + #13; ... ShowMessage(sContainerPath); // <--- ZUGRIFFSVERLETZUNG jetzt hier? Da war mal in irgendeinem meiner Programme mal was, aber da komme ich nicht mehr an die Sourcen :-( |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
ShowMessage(EdContainerPath.Text); // <--- ZUGRIFFSVERLETZUNG jetzt hier?
Zitat:
Delphi-Quellcode:
"txt := '- Benutzer wurde erfolgreich nach "'+EdContainerPath.Text+'" verschoben.' + #13 // <--- ZUGRIFFSVERLETZUNG jetzt weg?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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