Autor Beitrag
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 23.04.07 14:26 
Hallo!

Ich habe gerade hier ein tolles Proramm gefunden, mit dem man prüfen kann, ob sein Programm mit Vista läuft. Also hab ich das mal runtergeladen und den "Standard User Analyser" mit Phaleron gefüttert, da es da hieß, dass man unter Vista Admin-Rechte braucht, was ich natürlich nicht will. Und tatsächlich spuckt mir das Programm ein paar Fehler aus! Und zwar erst mal 5 Stück, bei denen der Stacktrace auf etwa das hier endet:

..
shell32!SHGetFolderLocation+68
shell32!SHGetSpecialFolderLocation+17
Phaleron!+4d00fa
Phaleron!+4e5464
KERNEL32!RegisterWaitForInputIdle+49

Ich rufe in Phaleron die SHGetSpecialFolderLocation auf, um rauszubekommen, wo ich meine Datenbankdatei ablegen kann. Einer dieser 5 Fehler hat die Fehlermeldung "Access was restricted to trusted users only". Das könnte ja mein Admin-Problem sein. Als "Detailed Information" wird angegeben:
CreateFileW: File (\Device\NamedPipe\lsass) only grants requested 'FILE_APPEND_DATA' to 'VORDEFINIERT\Administratoren'
Und da stockt es etwas bei mir. Es scheint also so zu sein, dass SHGetSpecialFolderLocation irgendwo mal CreateFileW aufruft und dieses CreateFileW mcht dann den Fehler, dass das Programm Admin Rechte braucht. Nun sehe ich aber keine Möglichkeit dieses problem zu lösen, da ich ja nur die SHGetSpecialFolderLocation aufrufe und der Rest wird von der WinAPI erledigt. Was kann ich also tun um Phaleron Vista kompatibel zu bekommen?



MrSaint

P.S.: wie gesagt spuckt mir der Standard User Analyser noch mehr Fehler aus, die heißen aber "Object opened/created in a restricted namespace" und "Requested a security-relevant privilege". Die rechne ich jetzt naiv mal nicht zu meinem Problem dazu :mrgreen: Ersterer Fehler hat auch einen anderen Stacktrace al sder oben angegebene, da gehts um die Bibliothek "gds32"...

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Schmidt John
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 17.08.09 11:38 
Hi,

Wenn Du den Code hast, schreibe es um auf direkten Registry-Zugriff. Unter folgenden Keys findest Du dann die Ablagen:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

Dies muss noch für Vista verifiziert werden, dürfte aber gleich sein. :mrgreen:

Gruss,
John
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 17.08.09 11:50 
Wie hier
www.delphi-forum.de/viewtopic.php?t=92758
schon erwähnt, würde mich die Quelle dieser Behauptung interessieren, warum die Funktion "unzuverlässig" arbeitet.

PS: Gräbst du nun eigentlich jeden noch so alten Thread zu diesem Thema aus, nur um dort dasselbe zu behaupten?

_________________
PROGRAMMER: A device for converting coffee into software.
Schmidt John
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 17.08.09 12:44 
Nun, ich habe vor kurzem solche Programme, die mit der SHGetSpecialFolderLocation bis unter XP tadellos funktioniert haben, neu auf Vista portiert und Wundersames erlebt: Die eine Hälfte liefert weiterhin die richtigen Pfade, die andere endet mit not successful und PIdl = 0. Mit genau dem gleichen Code und gleichen Programmrechten. Das ist also die Quelle.

Seither suche ich überall nach einschlägigen Informationen, vergebens. Womit die Antwort auch auf Deine nächste Frage gegeben ist. Vielleicht behaupte ich dasselbe wie schon gesagt wurde, und hoffe, bestehendes zu bekräftigen - oder aufleben zu lassen und eventuell neue Erkenntnisse zu erhalten.
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Mo 17.08.09 13:26 
@Schmidt John


Zitat:
CSIDL
Note In Windows Vista, these values have been replaced by KNOWNFOLDERID values. See that topic for a list of the new constants and their corresponding CSIDL values. For convenience, corresponding KNOWNFOLDERID values are also noted here for each CSIDL value.
The CSIDL system is supported under Windows Vista for compatibility reasons. However, new development should use KNOWNFOLDERID values rather than CSIDL values.


Quelle: msdn.microsoft.com/e...bb762494(VS.85).aspx

Die Funktion arbeitet auch unter Vista wunderbar. Man muss sie halt nur richtig einsetzen.
Es ist dabei nicht hilfreich Un- bzw. Halbwahrheiten zu verbreiten.

Beste Grüße
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 17.08.09 13:57 
Und bzgl. Registry nutzen, um diesen Wert abzufragen, bitte GRÜNDLICH (wenn nötig mehrfach, bis zum Verstehen) bitte folgenden Artikel lesen: blogs.msdn.com/oldne...003/11/03/55532.aspx

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Schmidt John
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 17.08.09 15:07 
user profile iconTastaro hat folgendes geschrieben Zum zitierten Posting springen:
@Schmidt John
Die Funktion arbeitet auch unter Vista wunderbar. Man muss sie halt nur richtig einsetzen.
Es ist dabei nicht hilfreich Un- bzw. Halbwahrheiten zu verbreiten.

Beste Grüße


Wenn sie wunderbar arbeitet, warum dann die zufällige Funktionsweise? Wenn SHGetspecialFoderLocation aus komptibilitätsgründen behalten wurde, was Sinn macht, muss sie auch funktionieren. Ausserdem, halte dich bitte an die Reglemente, nicht persönlich zu werden. Wenn ich sage, was ich erfahren habe, so ist das weder un- noch halbwahr. Auf solche Antworten kann ich verzichten.