![]() |
CreateFile unter Win8
Komisch,
jetzt weiß ich nicht, was da falsch und habe nicht mal eine Idee, wo ich suchen könnte. Was ist falsch an hDevice:=CreateFile(PChar('\\.\PHYSICALDRIVE'+intt ostr(i)),GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); - äh - oder richtig. (hDevice - Cardinal, i - Integer) Starte ich es normal, kann er das nicht. (Invalid_Handle_Value) Starte ich es mit Administratorrechten, geht es. (Ich bin übrigens Administrator. Trotzdem will er die Rechte noch explzit.) Starte ich es normal in der Delphi-IDE, geht es auch. Ich kann mir da nix mehr vorstellen. (Getestet unter Win7 und Win8, 64, pro mit D7 pro) Was stimmt denn da nicht? Gruß Mattze |
AW: CreateFile unter Win8
Zugriff auf physikalische oder logische Datenträger gibts nunmal nur mit Adminrechten :P Ab Win Vista musst du dank der UAC deinen Prozess explizit als Administrator starten, sonst wird er nur mit eingeschränkten Rechten ausgeführt.
|
AW: CreateFile unter Win8
Hallo,
den Hinweis hatte ich mal wieder vergessen: UAC ausgeschaltet. Und nun? Warum kann es die Delphi-IDE? Die wird als Administrator gestartet. Wird das vererbt? Kann man das per Code setzen (wenn man sowieso Admin ist)? Und warum muss ich explizit als Adminstrator starten, obwohl ich Administrator bin? Gruß Mattze |
AW: CreateFile unter Win8
Ohne UAC ist das Verhalten natürlich komisch. Generell werden die Security Tokens vererbt. Also wenn du aus einem Administratorprozess heraus einen weiteren Prozess startest, erbt Dieser dann auch die Administratorrechte. Könnte also schon daran liegen. Vielleicht lässt sich die UAC unter Windows 8 nicht mehr in dem Umfang abschalten, wie man es von Win7 her gewöhnt ist.
Was sagt denn GetLastError()? |
AW: CreateFile unter Win8
Hallo,
ich habe gerade noch mal geguckt. Also, unter Win7 64 pro (ohne UAC) geht es ohne explizit als "Adminstrator ausführen". Createfile ist doch eigentlich eine Grundfunktion, die ohne Probleme funktionieren müsste. Das wird doch immer und von allen Programmiersprachen genutzt, um nur Dateien zu bearbeten! GetLastError gucke ich noch... Gruß Matze |
AW: CreateFile unter Win8
Hallo,
also GetLastError sagt: "Zugriff verweigert" (5). Mit Adminrechten (als Administrator starten) ist alles OK. (GetLastError=0) Wieso, wenn ich sowieso Admin bin? Unter Winj7 iost aber alles auch ohne explizitem Admin OK. (Alles bei ausgeschaltener UAC.) Gruß Mattze |
AW: CreateFile unter Win8
Aber ich habe es ein wenig getestet, bei Windows 8 kann man die Sicherheit an der Stelle nicht ganz so aus dem System werfen wie bei Windows 7, da wird wohl wie bei Windows Vista ein wenig Druck aufgebaut um die Unvorsichtigen zwangsweise vor Viren zu schützen. Sprich ein paar Funktionen benötigen nun Adminrechte, die vorher keine brauchten.
Wobei ich für meine privaten Tools schlicht keinen Support leiste, wenn jemand die UAC deaktiviert hat. Es steht ja auch aus gutem Grund "nicht empfohlen" dabei. Zitat:
|
AW: CreateFile unter Win8
Deine Anwendung sollte so designed sein, dass sie notfalls auch komplett unter eingeschränkten Rechten arbeiten kann. Dann hast du auch gleich keine Probleme mehr mit mit Drag & Drop Interaktion (dein anderer Thread). Für die Funktionen, die wirklich Adminrechte benötigen, gibt es die Möglichkeit entweder einen Kindprozess mit elevated Rechten zu spawnen oder aber die kritischen Funktionen über einen COM Server ablaufen zu lassen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr. |
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-2025 by Thomas Breitkreuz