Frage

Es ist möglich, aber ist es angebracht, SHFileOperation in einem Windows-Dienst zu benutzen? All diese SHxxx API-Funktionen in shell32.dll zu haben scheinen mit Benutzerebene Programmen im Kopf geschrieben. Kann ich sicher sein SHFileOperation jemals nicht GUI angezeigt werden?

War es hilfreich?

Lösung

Ich würde sagen, nicht es nicht angemessen oder ratsam ist. Die meisten der shell32 APIs wurden mit einem grundlegenden Verständnis geschrieben, dass sie in interaktiven Prozessen verwendet werden würde. Ich glaube nicht, gibt es eine Möglichkeit, können Sie garantieren, dass SHFileOperation nie eine UI-Komponente angezeigt werden soll. In der Tat, wenn man sich unter IFileOperation (die die neue Vista-Schnittstelle ist, die SHFileOperation ersetzt), ist es eindeutig fest:

  

Macht Methoden zum Kopieren, Verschieben, Umbenennen, Erstellen und Löschen von Shell Elementen sowie Methoden Dialoge Fortschritte und Fehler zu liefern. Diese Schnittstelle ersetzt die SHFileOperation Funktion.

Andere Tipps

Nach dem SHFILEOPTSTRUCT Dokumentation, Sie können die folgenden Flags verwenden jede UI zu hindern angezeigt:

FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR

oder (wenn Sie Targeting Windows Vista), FOF_NO_UI, die die gleiche wie die oben ist.

Suchen Sie in der ShellAPI.h Header-Datei im Windows SDK, der Kommentar gegen FOF_NO_UI sagt „weisen keine UI überhaupt“, so von diesem Ich gehe davon aus, es ist OK SHFileOperation zu verwenden.

Ich muss zustimmen. Nicht angemessen oder ratsam

Der prinicpal Grund SHFileOperation zu verwenden ist Operationen mit einer Benutzeroberfläche auszuführen, und / oder die sind umkehrbar. D. h mit SHFileOperation Dateien zu löschen, wird die Dateien in einem Papierkorb legen, anstatt sie zu löschen die aktuellen interaktiven Benutzer undelete ermöglicht, oder rückgängig machen die Operation durchgeführt. Da die Dienste auf einem nicht interaktiven Desktop ausgeführt werden, niemand wird jemals in der Lage sein, darauf hin, dass Papierkorb löschen.

ich dieses Problem habe, wie gut und arbeitet an eine sichere und zuverlässige Netzwerkdateikopie zwischen Servern und Netzwerkfreigaben Implementierung (die meisten dieser Aktien sind CIFS / NetApp-Filer-basierte) und SHFileOperation nicht von Zeit zu Zeit.

Jetzt begann mit ROBOCOPY (standardmäßig verfügbar in alle Microsoft-Betriebssystem von Vista / Server 2008 aufwärts) und sieht wirklich interessant und zuverlässig.

Dies hat mir die Augen geöffnet: https://stackoverflow.com/a/1030752/559144

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top