Help and Support

Id. de artículo: 197486 - Última revisión: martes, 29 de junio de 2004 - Versión: 3.0

PRB: Archivos compartidos de abrir Fails with Error 75 # en Windows 95 como de sólo lectura

En esta página

Expandir todo | Contraer todo

Síntomas

Error "Abrir para binary" en Visual Basic al intentar abrir un archivo en un recurso compartido en un equipo con Windows 95 donde el control de recurso compartido se ha configurado para compartir el nivel de acceso a. La llamada a Open generará el mensaje siguiente:
Error en tiempo de ejecución '75': error de acceso a ruta o archivo.

Esto sólo ocurre cuando el recurso compartido está en un equipo Windows 95 con control de acceso de recurso compartido.

Solución

Éstas son tres soluciones posibles:
  • Establezca el permiso de acceso en el recurso compartido de control total.

    -o bien -
  • Utilice el acceso de nivel de usuario. Esto sólo es posible si el equipo en cuestión forma parte de un dominio de Windows NT.

    -o bien -
  • Acceso al archivo mediante llamadas a la API Win32.

Más información

Pasos para reproducir este comportamiento

  1. Reproducción de este problema requiere dos equipos conectados mediante una red. El servidor debe ser un equipo con Windows 95. El cliente puede ser Windows 95, Windows 98, Windows Millennium Edition, Windows NT o Windows 2000.
  2. En el equipo servidor, haga clic con el botón secundario en el icono "Entorno de red" para abrir el menú contextual y, a continuación, seleccione Propiedades. Haga clic en la ficha "Control de acceso" en el cuadro de diálogo de red que muestra. Seleccione "Compartir Level Access Control" y, a continuación, haga clic en Aceptar. A continuación, se establece el equipo para control de acceso de nivel de recurso compartido.

    Nota: Se puede solicitar un disco de Windows.
  3. En el equipo servidor, cree una nueva carpeta en la unidad C: denominada Testshare. Haga clic con el botón secundario en la carpeta Testshare para mostrar el menú contextual y, a continuación, seleccione Compartir. Comparta la carpeta como "Sólo lectura" sin una contraseña. Cree un archivo denominado Test.txt que contiene un par de líneas de texto aleatorios y, a continuación, guárdelo en la carpeta Testshare.
  4. En el equipo cliente, cree un nuevo proyecto exe estándar de Visual Basic. Se creará Form1 de manera predeterminada.
  5. Agregue dos controles de botón de comando a Form1.
  6. Agregue el código siguiente a la sección General Declarations de Form1.
          Option Explicit
    
          ' Constants
          Private Const GENERIC_READ = &H80000000
          Private Const OPEN_EXISTING = 3
          Private Const OPEN_ALWAYS = 4
          Private Const FILE_SHARE_READ = &H1
          Private Const FILE_SHARE_WRITE = &H2
          Private Const FILE_ATTRIBUTE_NORMAL = &H80
    
          Private Const PATH_FILE = "\\winever\testshare\test.txt"
    
          ' Functions
    
          Private Declare Function CreateFile Lib "kernel32" _
          Alias "CreateFileA" _
          (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _
           ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, _
           ByVal dwCreationDisposition As Long, _
           ByVal dwFlagsAndAttributes As Long, _
           ByVal hTemplateFile As Long) As Long
    
          Private Declare Function CloseHandle Lib "kernel32" _
          (ByVal hObject As Long) As Long
    
          Private Declare Function ReadFile Lib "kernel32" _
          (ByVal hFile As Long, _
           lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _
           lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
    
          Private Sub Command1_Click()
             Open PATH_FILE For Binary As #1
             Close #1 ' Run-time error '75': Path/File access error
          End Sub
    
          Private Sub Command2_Click()
             Dim hFileHandle As Long
             Dim bBuffer(10) As Byte
             Dim lResult As Long
             Dim i As Integer
    
             ' Open the file.
             ' !!! Be sure to modify PATH_FILE to your servers name!
             hFileHandle = CreateFile(PATH_FILE, GENERIC_READ, 0&, 0&, _
                           OPEN_EXISTING, 0&, 0&)
             ' Check filehandle to see if we get an error back, a value of -1
             ' indicates an error.
             MsgBox (hFileHandle)
             ' Read the first 10 bytes of the file.
             lResult = ReadFile(hFileHandle, bBuffer(0), 10, cBytesRead, 0)
             ' Write the 10 bytes to the immediate pane.
             For i = 0 To UBound(bBuffer)
                Debug.Print bBuffer(i); " ";
             Next i 
             Debug.Print
             Debug.Print StrConv(bBuffer, vbUnicode)
             ' Close the file.
             CloseHandle (hFileHandle)
          End Sub
    
          Private Sub Form_Load()
             Command1.Caption = "Show Error"
             Command2.Caption = "Workaround"
          End Sub
    
    					
  7. Modificar el PATH_FILE constante con nombre del equipo servidor.
  8. Ejecute el proyecto y haga clic en el botón Mostrar Error. Esto muestra el mensaje siguiente:
    Error en tiempo de ejecución '75': error de acceso a ruta o archivo.
    Nota: Esto sólo falla cuando el recurso es de sólo lectura. Si establece permisos del recurso en control total, se produce ningún error.
  9. Para demostrar la ejecución del programa de solución nuevo y haga clic en el botón de solución. Abrir que el archivo se realizará correctamente y se vea los valores de los 10 primeros bytes del archivo imprimir en la ventana de depuración, así como el equivalente de cadena.

La información de este artículo se refiere a:
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Standard Edition
Palabras clave: 
kbmt kbcode kbfileio kbprb KB197486 KbMtes
Traducción automáticaTraducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 197486  (http://support.microsoft.com/kb/197486/en-us/ )

Seleccione idioma