Frage

Ich habe bemerkt, dass, wenn der Pfad Parameter an die Funktion CreateFile Ziele \Windows\System32\ der Aufruf mit der folgenden Fehlercode ERROR_PATH_NOT_FOUND versagt.

Der Dateipfad ist richtig, ich der Besitzer des Ordners bin, so ist die Frage, warum versagt der Anruf? Hat MS spezielle Politik von verbietet den Ordner hinzufügen zugegriffen wird?

Beispielcode:

TCHAR szFile[MAX_PATH];
PathCombine(szFile, g_szSystemDirectory, "settings.ini");

HANDLE hFile = CreateFile(szFile,
                          GENERIC_READ,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          0,
                          NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
    printf("INVALID FILE: %i", GetLastError());
    return FALSE;
}
War es hilfreich?

Lösung

  1. können wir einige Beispiel-Code zu sehen?
  2. Haben Sie das Laufwerk angegeben, das heißt "C: \ Windows \ System32 \"
  3. Sind Sie versuchen, eine Datei in system32 zu öffnen?
  4. Tritt dies auf Windows 7 nur? und
  5. Warum müssen Sie alles innerhalb system32 in erster Linie ändern?

billy3

Andere Tipps

Wenn es eine 32-Bit-Anwendung auf einem 64-Bit-Betriebssystem ausgeführt wird, dann Wow64DisableWow64FsRedirection () aufrufen, bevor Sie Ihren Aufruf von Create wird gelesen von "C: \ Windows \ System32" anstelle von "C: \ Windows \ Syswow64", das ist wahrscheinlich, was mit dir los ist.

Mit Windows XP sowohl Administratoren / Standardkonten benötigen keine Administratorrechte ein Gerät Griff zu erhalten.

Das hat sich geändert auf Vista, Windows 7 (UAC), wo Sie Administratorrechte Gerät Griffe erhalten haben muss.

Einige Lösungen sind:

  1. Verwenden Sie einen Dienst
  2. Verwenden Sie COM Erhebung Moniker
  3. Verwenden Manifest

Hinweis: Wenn Sie nur statistische Informationen von einem Gerät abfragen, müssen diese nicht über Administratorrechte erfordern. Wenn CreateFile() verwenden, geben Sie Null (0) für die DwDesiredAccess Parameter.

Sie sind Programm wahrscheinlich als Administrator ausgeführt werden muss. Du musst deine Rechte ausweiten, auch wenn Sie als Administrator angemeldet sind. Rechtsklicken Sie, wenn Sie das Programm und klicken Sie auf „Ausführen als Administrator“ ausführen oder die Eigenschaften bearbeiten, und wählen Sie immer als Administrator ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top