Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con Servicio de Windows y getFolder

Estas en el tema de Problema con Servicio de Windows y getFolder en el foro de .NET en Foros del Web. Buenas, Estoy desarrollando un servicio de windows en VS10 a partir de un programa base. El programa en sí es sencillito. He desarrollado un portal ...
  #1 (permalink)  
Antiguo 05/03/2013, 06:57
 
Fecha de Ingreso: febrero-2013
Ubicación: Por aquí
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Problema con Servicio de Windows y getFolder

Buenas,

Estoy desarrollando un servicio de windows en VS10 a partir de un programa base.

El programa en sí es sencillito. He desarrollado un portal en el que se pueden subir archivos, pero el espacio es limitado y se paga por él. El programa se encarga de ir mirando periódicamente cuánto espacio se ha gastado sumando lo que ocupa la base de datos y la carpeta "upload". Se compara con el espacio total y la resta se guarda en un campo llamado "espacio_disponible". De tal manera que cada vez que el usuario hace login compruebo ese campo y le aviso de que le queda un 10% o un X%..

Bien, el programa en modo "interfaz gráfica" funciona sin problemas. Los problemas vienen cuando he intentado transformarlo a servicio de windows para no tener que preocuparme de que el programa ande abierto siempre en el servidor y actúe en segundo plano.

En concreto, y después de andar depurándolo, casca en esta función:

Código:
    Private Function tamCarpeta(ByVal IDEMPRESA)
        escribirLog("En tamcarpeta ando 1")
        Dim Fso As Object
        escribirLog("En tamcarpeta ando 2")
        Fso = CreateObject("Scripting.FileSystemObject")
        escribirLog("En tamcarpeta ando 3")
        escribirLog(ruta & IDEMPRESA)
        Dim fldCarpeta = Fso.GetFolder(ruta & IDEMPRESA)
        escribirLog("En tamcarpeta ando 4")
        Dim tam = fldCarpeta.Size
        escribirLog("En tamcarpeta ando 5")
        tam = (tam / 1024) / 1024
        escribirLog("En tamcarpeta ando 6")

        'tam = Replace(tam, ",", ".")
        Return tam
    End Function
Y más concretamente en la línea que he puesto en negrita. Esta función no daba problemas en el modo de interfaz gráfica, pero se ve que en modo servicio de windows no le cae muy bien el GetFolder. Hago algo mal? En modo servicio no se pueden usar esas instrucciones? Hay alguna equivalente?

En fin, que si me podéis ayudar a saber como conseguir el tamaño de una carpeta (o en el peor de los casos de los archivos que tiene dentro) en un servicio os lo agradeceré :)

Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 05/03/2013, 08:59
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema con Servicio de Windows y getFolder

No se trata de que le caiga bien o mal, se trata de un tema de permisos. Cuando ejecutas el programa en versión "escritorio", el programa corre con los permisos del usuario actual. Cuando se ejecuta como servicio "normalmente" (si no indicas lo contrario) se hace como "LocalSystem" o "Network Service".

Para comprobarlo, una vez tengas el servicio instalado y antes de ponerlo en marcha, ver a la ventana de servicios de Windows. Haz segundo click en tu servicio y selecciona "Propiedades". Ve a la pestaña de "Iniciar Sesión" y marca la opción "Esta cuenta" y con examinar buscas y seleccionas tu usuario de windows. Prueba a iniciar el servicio a ver que tal te funciona ahora :)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 06/03/2013, 02:24
 
Fecha de Ingreso: febrero-2013
Ubicación: Por aquí
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con Servicio de Windows y getFolder

Cita:
Iniciado por Malenko Ver Mensaje
No se trata de que le caiga bien o mal, se trata de un tema de permisos. Cuando ejecutas el programa en versión "escritorio", el programa corre con los permisos del usuario actual. Cuando se ejecuta como servicio "normalmente" (si no indicas lo contrario) se hace como "LocalSystem" o "Network Service".

Para comprobarlo, una vez tengas el servicio instalado y antes de ponerlo en marcha, ver a la ventana de servicios de Windows. Haz segundo click en tu servicio y selecciona "Propiedades". Ve a la pestaña de "Iniciar Sesión" y marca la opción "Esta cuenta" y con examinar buscas y seleccionas tu usuario de windows. Prueba a iniciar el servicio a ver que tal te funciona ahora :)

Gracias compañero, parecía buena idea, pero sigue cascando en el mismo sitio con mi cuenta de usuario. Seguiré probando :/

Etiquetas: servicio, servidor, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:05.