it-swarm.com.de

C # Drag Drop funktioniert nicht unter Windows 7

Ich hatte schon eine ganze Weile ein Projekt mit C # winforms. Ich habe eine Drag-Drop-Funktion implementiert, bevor Windows 7 veröffentlicht wurde. Lief wie am Schnürchen. Bei Verwendung von Windows 7 funktioniert es jedoch nicht. Das Ereignis wird nicht einmal ausgelöst.

AllowDrop ist auf true gesetzt. Wenn Sie DragEnter abonnieren, wird sie in Windows 7 nicht aufgerufen (nicht sicher über Vista). Aber auf XP funktioniert es den ganzen Weg. Das Programm wird mit Administratorrechten ausgeführt.

Gibt es einen Unterschied beim Drag Drop in Windows 7 im Vergleich zu XP? Ich weiß nicht, ob es relevant ist, aber ich verwende x64

44
Oskar Kjellin

Die Quell- und Zielprozesse müssen über kompatible Sicherheitsstufen\Berechtigungen verfügen. Wenn Ihre Quelle beispielsweise Explorer ist und mit Berechtigungen auf Benutzerebene ausgeführt wird, Ihre Zielanwendung jedoch mit Administratorrechten (auf erhöhter Ebene) ausgeführt wird, können Sie kein Drag & Drop durchführen, da dies als Sicherheitsproblem des Ziels angesehen wird mit einer höheren Stufe von Berechtigungen ausgeführt.

75
Tim Lloyd

Es wird UIPI (User Interface Privilege Isolation) genannt. Verhindert Eingabe-Exploits von Programmen, die mit eingeschränkten Berechtigungen ausgeführt werden. Es kann deaktiviert werden, Sie müssen dies tun:

  • Ändern Sie das Manifest und setzen Sie das uiAccess-Attribut für das <requestedExecutionLevel>-Element auf true.
  • Speichern Sie die EXE-Datei Ihres Programms in einem Unterverzeichnis von c:\windows oder c:\program files
  • Unterschreiben Sie Ihre EXE-Datei mit einem Zertifikat einer gültigen Zertifizierungsstelle für Codes

Ich habe das eigentlich nie versucht, ymmv.

17
Hans Passant

Rufen Sie in Ihrer Anwendung ChangeWindowMessageFilter mit den folgenden Werten auf, um das Ziehen und Ablegen zu/von Ihrer übergeordneten Anwendung und nicht erhöhten Anwendungen wie Explorer zu ermöglichen:

ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter (0x0049, MSGFLT_ADD);
1
dmex

Es hat zwar nichts damit zu tun, aber ich hatte verrückte Drag-n-Drop-Probleme mit Windows 8. Es würde eine Weile funktionieren und dann aufhören zu arbeiten. Ich konnte kein Drag-and-Drop zwischen dem Explorer, einem Editor usw. ziehen. Es stellte sich heraus, dass bei einer Interaktion mit einem Hyper-V VM mit Windows 7 meine Drag-and-Drop-Fähigkeit geändert wurde (oder Möglicherweise war es die Tastenkombination Strg-Alt-End, um crtl-alt-delete zu Hyper-V zu simulieren. In jedem Fall, bei dem das Problem aufgetreten ist, wurde Folgendes behoben:

Ich habe die Lösung für mein Problem hier gefunden: Fix Drag Drop Funktionalität funktioniert nicht unter Windows 7 Vista XP

Grundsätzlich war die Lösung:

Klicken Sie im Explorer mit der linken Maustaste auf eine Datei. Halten Sie die Maustaste gedrückt, drücken Sie [Esc] und dann [Strg]. Lassen Sie dann die Maustaste los. Ich muss davon ausgehen, dass dies einige Einstellungen für die Zugänglichkeit oder etwas anderes zurücksetzt.

1
Metro

Eine geringfügige Ergänzung des Postings von dmex. .__ Das Folgende definiert die Variablen und die Konstante. 

private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;

Möglicherweise möchten Sie auch die Verwendung von ChangeWindowMessageFilterEx in Betracht ziehen, wenn sich Ihre Anwendung unter Windows 7 befindet. Ich glaube auch, dass OLE Drag & Drop möglicherweise kein Windows-Messaging verwendet. Das würde also überhaupt nichts bewirken. 

1
BlndLeadingDef

Ich hatte das gleiche Problem beim Debuggen einer Desktop-C # -Anwendung von VS 2015 und Windows 7 x64 als SO Es lag an der administrator-Berechtigung, die über die Verknüpfung meines VS IDE im Desktop angewendet wurde (siehe Bildschirmfoto). Deaktivieren dieser Option Drag & Drop-Ereignisse werden ordnungsgemäß angehoben.

Danke an TimLloyd für seine Hilfe.

 enter image description here

0
mggSoft