2009-03-02 26 views
6

La aplicación en cuestión es .NET 2.0 Framework WinForms. Se supone que funciona en una gran base de usuarios (instalación desde CD). Instalación realizada con InnoSetup.Vista & C# - Problema de arrastrar y soltar (no relacionado con la elevación)

En dos máquinas, la aplicación no acepta Arrastrar & Caída (tanto la aplicación como la fuente de D & D tienen el mismo nivel de elevación).

Al agregar Leer & Leer & Ejecutar los derechos a INTERACTIVE SID para el acceso directo a la aplicación, este problema parece estar resuelto.

Pregunta: cómo la adición de esos derechos y D & D están relacionados y cómo verificar/establecer esos derechos en el proceso de Instalación?

+1

Además, esto también está conectada con el que está instalado el programa - si está instalado fuera de Archivos de programa ("ubicaciones de confianza") se comportará mal. –

+1

Buena pregunta, no sé la respuesta. –

+1

Hace poco estuve en un barco similar con problemas extravagantes de implementación masiva (también winforms y .net 2.0). No me sorprendería terriblemente si descubres que tampoco está limitado a Vista. He tenido algunos problemas que al principio parecían ocurrir solo en Vista, solo para descubrir algunas semanas después que sucede en algunas máquinas XP. – blak3r

Respuesta

0

Solo una foto en la oscuridad, pero ¿el atributo [STAThread] está presente en el método Main() de su aplicación? Sin él, arrastrar y soltar no funcionará en absoluto. (Aunque esto no explica el cambio de comportamiento con el cambio de derechos en SID INTERACTIVO).

+0

Sí, por supuesto, está allí. Además, este problema es solo en 2 máquinas (de las 50 probadas). –

+0

Sí, pero los problemas de subprocesamiento pueden tener un comportamiento aleatorio con Windows.Forms. Puede funcionar en algunas máquinas y fallar en otras. – AMissico

0

Debe ejecutar el archivo exe para el proyecto directamente y fuera del entorno de Visual Studio. Estoy trabajando en una plataforma de Windows Vista.

1

Tiene dos preguntas aquí:

  1. cómo la adición de esos derechos y D & D están relacionados y ...

Esta estoy totalmente seguro acerca. Usamos D & D en nuestra aplicación WinForm desde/hacia el shell y Outlook sin ningún problema en Vista. Ni siquiera estoy seguro de que el cambio de ACL que sugiera sea seguro para solucionar cualquier problema que tenga.

  1. cómo verificar/establecer esos derechos en el proceso de Instalación?

La manera más fácil de hacer esto es create a .Net install class y agregue el siguiente código:

public static void ReplacePermissions(string filepath, WellKnownSidType sidType, FileSystemRights allow) 
    { 
     FileSecurity sec = File.GetAccessControl(filepath); 
     SecurityIdentifier sid = new SecurityIdentifier(sidType, null); 
     sec.PurgeAccessRules(sid); //remove existing 
     sec.AddAccessRule(new FileSystemAccessRule(sid, allow, AccessControlType.Allow)); 
     File.SetAccessControl(filepath, sec); 
    }