2009-03-02 9 views
6

Anwendung in Frage ist. NET 2.0 Framework WinForms. Es soll auf großer Benutzerbasis funktionieren (Installation von CD). Installation erfolgt mit InnoSetup.Vista & C# - Drag & Drop-Problem (nicht im Zusammenhang mit Höhe)

Auf zwei Maschinen akzeptiert die Anwendung keine Drag & Drop (sowohl Anwendung als auch Quelle von D & D haben die gleiche Höhe).

Durch Hinzufügen von Read & Lesen & Ausführen von Rechten zu INTERACTIVE SID für die Verknüpfung der Anwendung scheint dieses Problem zu lösen.

Frage: Wie diese Rechte hinzufügen und D & D sind verwandt und wie diese Rechte in Installationsprozess zu überprüfen/festlegen?

+1

Auch ist dies auch verbunden, in das Programm installiert ist - wenn es aus Program Files installiert ist ("vertrauenswürdige Orte") wird es sich schlecht verhalten. –

+1

Gute Frage, kenne die Antwort nicht. –

+1

In einem ähnlichen Boot in letzter Zeit mit skurrilen Massenbereitstellungsproblemen (auch winforms und .net 2.0). Ich wäre nicht sehr überrascht, wenn Sie herausfinden würden, dass es nicht nur auf Vista beschränkt ist. Ich hatte ein paar Probleme, die zunächst nur auf Vista zu passieren schienen, nur um ein paar Wochen später herauszufinden, dass es auf ausgewählten XP-Rechnern passiert. – blak3r

Antwort

0

Nur ein Schuss im Dunkeln, aber ist das Attribut [STAThread] in der Main() - Methode Ihrer Anwendung vorhanden? Ohne es funktioniert Drag & Drop überhaupt nicht. (Obwohl dies die Änderung des Verhaltens mit der Änderung der Rechte auf INTERACTIVE SID nicht erklären kann).

+0

Ja, natürlich ist es da. Auch dieses Problem ist nur auf 2 (von 50 getesteten) Maschinen. –

+0

Ja, aber Threading-Probleme können bei Windows.Forms ein zufälliges Verhalten haben. Kann an einigen Maschinen arbeiten und an anderen fehlschlagen. – AMissico

0

Sie sollten die EXE-Datei für das Projekt direkt und außerhalb der Umgebung von Visual Studio ausführen. Ich arbeite an einer Windows Vista-Plattform.

1

Sie haben zwei Fragen hier:

  1. wie das Hinzufügen werden diese Rechte und D & D bezogen und ...

Das ich total unsicher bin. Wir verwenden D & D in unserer WinForm-App zu/von der Shell und Outlook ohne Probleme in Vista. Ich bin nicht einmal sicher, dass die ACL-Änderung, die Sie vorschlagen, sicher ist, das Problem zu beheben, das Sie haben.

  1. Wie überprüfen/setzen Sie diese Rechte im Installationsprozess?

Der einfache Weg, den folgenden Code zu tun, das ist zu create a .Net install class und fügt:

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); 
    } 
Verwandte Themen