none
Permisos de escritura-lectura en C:\

    Question

  • Hola Foro, saludos

    Estimados, vengo con una consulta que podria resultar fácil decirlo pero muy pocos dan con la solución; esta se refiere a como escribir, anexar y leer contenido en un archivo  (no hay problema con esto) en la raíz del disco C:\, o sea C (con esto hay problemas); "Mediante Código".

    Usando éste sencillo código logro crear y escribir en un archivo - Si no existe lo crea, si existe anexa el contenido:

    Dim archivo As String = "C:\test.txt"
    Dim operacion As New System.IO.StreamWriter(archivo, True)
    
    operacion.WriteLine(TextBox1.Text, TextBox2.Text)
    operacion.Close()
    
    

    Pero como se podrán  dar cuenta yo intento guardarlo en la raíz del disco C: ... muchos me dirán guardalo en otra ubicación pero realmente esa es la solución fácil, sin embargo lo que se desea es utilizar esa ubicación o cualquier otra que se desee.

    Estuve leyendo acerca de modificar una clave del registro de windows lo que me pareció un poco exagerado.
    Link a la discución --->  http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/visual-basic/respuestas/2486179/crear-archivos-net

    Sin embargo, creo que utilizando las clases que estan en System.SystemException y FileIOPermision podría lograrlo... como? ni idea, lo uníco que puedo decir es que estuve mirando en:

    1) http://msdn.microsoft.com/es-es/library/system.io.ioexception%28v=vs.71%29.aspx
    2)http://msdn.microsoft.com/es-es/library/system.security.securityexception%28v=vs.71%29.aspx
    3)http://msdn.microsoft.com/es-es/library/system.security.permissions.fileiopermission%28v=vs.71%29.aspx

    y sinceramente no se me ocurre como hacerlo, con lo que apelo a su ayuda y consejos.


    Javier Teran F.

    Monday, January 28, 2013 4:50 PM

Answers

All replies

  • bajo que sistema operativo ejecutas la aplicacion ? sera quizas Win 7

    porque podrias usar el manifest para eejcutar como admin y poder escribir alli

    http://howtoideas.net/how-to-force-c-application-to-only-run-as-administrator-in-windows

    al subir lo provilegios harias que se pueda acceder a estas carpetas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marked as answer by Javier Teran F Tuesday, January 29, 2013 3:12 PM
    Monday, January 28, 2013 5:28 PM
  • Planteas un tema de seguridad, y te voy a dar mi opinion. Un usuario debe poder crear / modificar un fichero donde le venga en gana, siempre y cuando no vulnere las politicas de seguridad de su equipo/red. Por tanto, si yo quiero escribir en c:\, y no vulnero politicas, pues adelante..., pero si yo quiero escribir en c:\Documents And Settings\OtroUsuario\Mis Documentos, JAMAS debería poder hacerlo. Es más si es necesario, para eso esta el administrador del sistema: que me habilite privilegios para poder hacerlo.

    Eso no quita que haya que informar al usuario cuando va ha escribir un archivo si todo ha ido OK, o no se ha podido por no tener permiso para escribir en el path seleccionado.

    Monday, January 28, 2013 5:32 PM
  • Hola Leandro

    Entorno Desarrollo: Visual Studio 2010 Ultimate en Windows 7

    Gracias por tu consejo; me he ido al archivo App.manifest y aparece este contenido:

      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!-- Opciones del manifiesto de Control de cuentas de usuario
                 Si desea cambiar el nivel de Control de cuentas de usuario de Windows, reemplace el
                 nodo requestedExecutionLevel por alguno de los siguientes.
    
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                La especificación del nodo requestedExecutionLevel deshabilitará la virtualización de archivos y del Registro.
                Si desea usar la virtualización de archivos y del Registro para la compatibilidad
                con versiones anteriores, elimine el nodo requestedExecutionLevel.
            -->
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    En la linea: <requestedExecutionLevel level="asInvoker" uiAccess="false" /> reemplacé el level asInvoker por requireAdministrator.

    Sin embargo al compilar me dice que esa tarea requiere que la aplicación tenga permisos elevados, por lo que la unica solución es reiniciar VS2010 y ejecutarlo como administrador; no cerré VS2010, en el 'Explorador de Soluciones' encima del 'Nombre del Proyecto' click boton derecho y le di a Generar, luego me dirijí a la carpeta donde se encuentra la aplicación al ejecutarla me arroja el típico mensaje del 'Control de cuentas de usuario' excelente! y realiza las operaciones de lectura y escritura; ahora si me permites otra pregunta; cuando yo Empaquete esta aplicación en un único Instalador ¿deberé incluir este archivo .manifest o lo hace el compilador por defecto?

    Gracias Leandro te pasaste compa!
    Problema resuelto


    Javier Teran F.

    Tuesday, January 29, 2013 4:58 AM