Foutbericht 'error_access_denied' treedt op wanneer u probeert te schrijven naar een bestand in een gedeelde netwerkmap

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 842792
BelangrijkDit artikel bevat informatie over het register. Voordat u het register wijzigen, zorg ervoor dat u back-up en zorg ervoor dat u begrijpen hoe u het register kunt herstellen als er een probleem optreedt. Informatie over de back-up, herstellen, en het register bewerken, klik op de volgende artikelnummer in de Microsoft Knowledge Base:
256986Beschrijving van het Microsoft Windows-register
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Een aanroep naar deWriteFilefunctie mislukt. Dit probleem treedt op wanneer de volgende voorwaarden voldaan wordt:
  • U gebruikt een clientcomputer met Microsoft Windows XP Service Pack 1 (SP1).
  • U gebruikt deWriteFilefunctie probeert te schrijven naar een bestand in een gedeelde netwerkmap.
  • De gedeelde map zich op een server die wordt uitgevoerd Microsoft Windows 2000 of Microsoft Windows Server 2003.
Bovendien wordt het volgende foutbericht weergegeven:
ERROR_ACCESS_DENIED

Oorzaak

Dit probleem treedt op wanneer de volgende voorwaarden voldaan wordt:
  • Wanneer gebruikt u deCreateFilefunctie maken de bestand opgegeven alleen de constante GENERIC_WRITE in dedwDesiredAccessparameter.
  • Server Message Block (SMB)-ondertekening is ingeschakeld voor communicatie tussen de client en de servercomputer.

Workaround

Dit probleem wilt omzeilen, gebruikt de volgende methoden:
  • Geef de constante GENERIC_READ en de GENERIC_WRITE constante in dedwDesiredAccessparameter.
  • SMB-ondertekening wijzigen.

De constante GENERIC_READ en de GENERIC_WRITE constante opgeven in de parameter dwDesiredAccess

De volgende code gebruiken om het bestand te maken.

OpmerkingVervangen de volgende aanduidingen:
  • Vervang deServernaamtijdelijke aanduiding met de naam van een server die Windows 2000 of Windows Server 2003 wordt uitgevoerd.
  • Vervangen deMapnaamtijdelijke aanduiding met de naam van een gedeelde netwerkmap op de servercomputer.
// Specify the GENERIC_READ constant and the GENERIC_WRITE constant
// in the dwDesiredAccess parameter when you create the file.
hFile = CreateFile("\\\\ServerName\\FolderName\\Test.txt", GENERIC_READ |
    GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

SMB-ondertekening wijzigen

WaarschuwingAls u de Register-Editor onjuist gebruikt, kunnen er ernstige problemen dat u uw besturingssysteem opnieuw installeren. Microsoft kan niet garanderen dat u problemen die voortvloeien oplossen kunt uit het register Editor onjuist. Gebruik Register-Editor op eigen risico.
Deze stappen op de server en op de clientcomputer:
  1. Register-Editor, zoek en klik op de volgende register-subsleutel:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\Parameters
  2. In het rechterdeelvenster van Register-Editor met de rechtermuisknopRequireSecuritySignaturein deNaamveld en klik vervolgens opWijzigen. DeDWORD-waarde bewerkenhet dialoogvenster weergegeven.
  3. In deWaardegegevensin het vak0, en klik vervolgens opOK.
  4. Sluit de Register-Editor af en start de computer opnieuw.

Meer informatie

Stappen om het gedrag te reproduceren

  1. Gebruik op een computer waarop Windows XP SP1, Microsoft Visual C++ 6.0 een eenvoudige consoletoepassing Win32-project maken met de naam Test. Standaard wordt het bestand Test.cpp gemaakt.
  2. Een bestand maken door alleen de constante GENERIC_WRITE in dedwDesiredAccessWanneer u de parameter deCreateFilefunctie.
  3. Gebruik deWriteFilefunctie probeert te schrijven naar het bestand. Vervang hiervoor de bestaande code in het bestand Test.cpp met de volgende code.

    OpmerkingVervangen de volgende aanduidingen:
    • Vervang deServernaamtijdelijke aanduiding met de naam van een server die Windows 2000 of Windows Server 2003 wordt uitgevoerd.
    • Vervangen deMapnaamtijdelijke aanduiding met de naam van een gedeelde netwerkmap op de servercomputer.
    :
    #include "stdafx.h"
    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    
    void main()
    {
        HANDLE hFile;
        char lpBuffer[99999];
        DWORD lpNumberOfBytesWritten;
    
        // Write data to the buffer that you will
        // you use to write data to the file.
        for (int i = 0; i < 100000; ++i)
            lpBuffer[i] = 'a';
    
        // Specify only the GENERIC_WRITE constant in the
        // dwDesiredAccess parameter when you create the file.
        hFile = CreateFile("\\\\ServerName\\FolderName\\Test.txt",
            GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
        // Try to write the data in the buffer to the file.
        // If the call to the WriteFile function fails,
        // call the GetLastError function.
        if (!WriteFile(hFile, lpBuffer, 100000, &lpNumberOfBytesWritten, NULL))
    
            // If an ERROR_ACCESS_DENIED error has occurred, inform the user.
            if (GetLastError() == ERROR_ACCESS_DENIED)
            {
                printf("An ERROR_ACCESS_DENIED error has occurred.");
                printf("Press any key to continue.");
                getch();
            }
    
        // Close the handle to the file.
        CloseHandle(hFile);
    }
  4. Bouwen en uitvoeren van de toepassing. Een consolevenster wordt weergegeven. Als het probleem dat wordt vermeld in de sectie 'Symptomen' treedt op het consolevenster bevat de volgende uitvoer:
    ERROR_ACCESS_DENIED fout.
    Druk op een toets om door te gaan.

Referenties

Voor meer informatie over deCreateFilefunctie en deWriteFilefunctie, Ga naar de volgende website van Microsoft Developer Network (MSDN) sites:
CreateFile
http://msdn2.Microsoft.com/en-us/library/aa363858.aspx
WriteFile
http://msdn2.Microsoft.com/en-us/library/aa365747.aspx

Eigenschappen

Artikel ID: 842792 - Laatste beoordeling: donderdag 17 maart 2011 - Wijziging: 2.0
Trefwoorden: 
kbclient kbprb kberrmsg kbregistry kbkern32dll kbapi kbsmb kbserver kbmt KB842792 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:842792

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com