2010-12-20 7 views
2

Ich habe einen Benutzer, der gerade meine Winforms App auf Win7 läuft. Mit meiner App können Benutzer Zeilen aus einer geöffneten Excel-Tabelle auswählen und per Drag-and-Drop auf die App ziehen. Dieser Benutzer kann jedoch den Drag & Drop nicht durchführen. Der Cursor ändert sich in den "Nein" -Cursor (kleiner Kreis mit einer Linie) und die Operation wird nicht abgeschlossen.Drag & Drop auf Win7 Maschine zu meiner App

Ich forschte Drag-n-Drop und Win7 und alles, was ich fand, zeigt auf UAC und/oder UIPI. Ich war für einige Lösungen zu suchen und bin nicht sicher, ob eine der unten funktionieren würde:

  • Wenn der Benutzer als Administrator anmeldet (und als Folge läuft meine app als admin) würde zulassen, dass Drag-n- zur Arbeit gehen?

  • Muss der Benutzer die Einstellungen von UAC/UIPI ausschalten oder ändern, um Drag-and-Drop durchführen zu können?

Ich bin mir nicht sicher, was das Problem ist. Meine App läuft normalerweise von C:/Dokumente und Einstellungen/... (C:/Benutzer/... auf Win7). Geht wo es von Materie ausgeht? Funktioniert drag-n-drop nicht, weil der Benutzer meine App nicht mit ausreichenden Berechtigungen ausführt? Befinden sich sein Excel und meine App auf verschiedenen Berechtigungsstufen? Wenn ja, was kann dagegen getan werden? Beachten Sie, dass auch wenn meine App es Benutzern erlaubt, die Datei direkt zu ziehen, dies auch nicht funktioniert.

Gibt es auch eine Möglichkeit, dass der Benutzer dieses Problem mit anderen Apps reproduzieren kann? Gibt es Apps, die mit Win7 kommen, mit denen er das gleiche Problem sehen kann? Kann dies beispielsweise mit Notepad reproduziert werden?

Danke.

+1

Beim Ziehen und Ablegen über Sicherheitsgrenzen hinweg gibt es Einschränkungen. Wenn die Quelle und das Ziel auf der gleichen Sicherheitsstufe laufen (d. H. Sowohl Standardbenutzer als auch beide erhöht), sollte es kein Problem geben. –

+0

Wie werden diese Sicherheitsstufen für Apps festgelegt? Ich gehe davon aus, dass der Benutzer kein Administrator auf seinem Rechner ist. Wenn er also Excel normal ausführt, welche Sicherheitsstufe wird dafür verwendet? Und wenn er nur doppelklickt, um meine App zu starten: Wie hoch ist die Sicherheitsstufe meiner Apps? Ich weiß nicht viel über die Sicherheitsfunktionen von Win7. Wird das alles durch Einstellungen in der Benutzerkontensteuerung entschieden? – Flack

+0

Sie müssen einen Windows Vista oder Windows 7 Rechner bekommen und dies selbst ausprobieren!Sie können nicht wirklich ohne UAC auf die UAC kommen. –

Antwort

4

Erklären dieses Problem von UIPI ist ein sehr lange Strecke. Es hat nichts damit zu tun, ob der Benutzer als Administrator angemeldet ist oder nicht, was sich nicht auf die Benutzerkontensteuerung auswirkt und Ihr Programm wird trotzdem mit diesem Konto ausgeführt. Die einzige Möglichkeit, UIPI einzugreifen, um eine D + D zu stoppen, ist, wenn Ihr Programm erhöht ist und Excel nicht ist.

Um sich selbst zu erhöhen, erfordert Arbeit und passiert nicht zufällig. Sie müssten ein Manifest hinzufügen, damit der Benutzer die UAC-Eingabeaufforderung erhält. Oder der Benutzer müsste die Desktopverknüpfung ändern und die Option "Dieses Programm als Administrator ausführen" aktivieren, sie weiß davon. Während UIPI für Windows-Nachrichten (ChangeWindowMessageFilter) umgangen werden kann, kann es nicht für Drag & Drop verwendet werden, wenn also eine Erhebung stattfindet, dann stecken Sie fest. Der ultimative Test besteht darin, den Benutzer einfach zu bitten, den UAC-Schieberegler ganz nach unten zu schieben.

Das viel wahrscheinliche Szenario ist, dass Ihr DragEnter-Event-Handler einfach nicht mit den Daten zufrieden ist, die er sieht, und daher die e.Effect-Eigenschaft nicht zuweist. Wenn Sie keinen Debugger vor Ort bekommen können, dann schreiben Sie ein kleines Testprogramm, das die Werte von e.Data.GetFormats() sowie alles, was Sie sonst noch verwenden, protokolliert, um zu überprüfen, ob der Drop akzeptabel ist. Und vergessen Sie nicht das Offensichtliche: Der Benutzer fummelt einfach irgendwie am Zug.

+0

Danke für die Info. Ich glaube nicht, dass dies auf die Daten zurückzuführen ist, die gelöscht werden. Mit dem gleichen Build wie der Benutzer und der gleichen Version von Excel, nur auf WinXP, funktioniert alles gut. Außerdem kann der Benutzer die Excel-Dateien mit der Schaltfläche "Importieren" meiner App öffnen, anstatt sie zu ziehen und abzulegen. Auf diese Weise wählt er es nur mit einem Standard-Dateibrowser-Dialog aus. Ich schätze, ich werde den Benutzer bitten, den UAC-Schieberegler vorübergehend ganz zu deaktivieren und zu prüfen, ob dies Auswirkungen hat. – Flack

+0

@Flack Wie können Sie die Entwicklung für Windows ohne Zugriff auf UAC in Betracht ziehen ?! Ich bin geneigt, Hans zuzustimmen, dass UIPI nicht der wahrscheinlichste Schuldige ist. –

+0

@David Die App ist sehr alt und es gibt nur ein paar Benutzer davon auf Win7. Ich habe Zugang zu einem Win7-Rechner, aber was ich gefunden und ursprünglich gepostet habe, war nur eine flüchtige Suche bei Google. Ich werde einige Tests mit meiner Win7-Maschine durchführen und sehen, was ich herausfinden kann. Ich musste mich nie wirklich mit UAC beschäftigen, da fast alle existierenden Benutzer noch auf XP sind. Danke für die Hilfe :) – Flack