Benutzer mit den meisten Antworten
Position der Desktop Icons bei Einsatz einer "AppBar" speicher und wiederherstellen

Frage
-
Hallo,
unsere in VB.Net geschriebene Anwendung verwendet zwei AppBar-Fenster (siehe z.B. http://msdn.microsoft.com/de-de/library/bb979461.aspx). Nun ist es so, dass diese AppBars den Desktop-Bereich verkleinern und damit auch die Position der Desktop Icons sich verschiebt. Beim Schließen der AppBars sind dann die Icons auf dem Desktop des Benutzers anders als vor dem Start unserer Anwendung, was nicht besonders schoen ist.
Gibt es eine einfache Methode in VB.Net, um die Positionen der Icons zu speichern und wiederherzustellen? Im Netz findet man folgenden VB6 Code von Paul Pavlic, der mir aber unnoetig kompliziert erscheint.
http://www.wer-weiss-was.de/theme161/article848786.html
Da gibt es inzwischen doch bestimmt etwas einfacheres?
Gruss,
Martin
Antworten
-
Hallo Robert,
Danke fuer die Antwort. Wir haben mittlerweile eine Loesung gefunden. "regFile" ist ein String mit dem Pfad zur .reg-Datei, in der die Icons gespeichert werden.
Private Sub saveDesktopIconPositions() Const baseKey As String = "Software\Microsoft\Windows\Shell\Bags" ... Dim key As RegistryKey = Nothing Dim bags() As String Dim desktopKey As RegistryKey = Nothing Dim exportCommand As String = "" Try ... ' Search for Bags/NUM/Desktop key = Registry.CurrentUser.OpenSubKey(baseKey) bags = key.GetSubKeyNames() For Each bag As String In bags desktopKey = Registry.CurrentUser.OpenSubKey(baseKey + "\" + bag + "\" + "Desktop") If Not desktopKey Is Nothing Then Exit For 'Found our Desktop key! End If Next ' Export to User specific location, overwriting existing key file exportCommand = "regedit.exe /e " + regFile + " " + desktopKey.Name Shell(exportCommand, AppWinStyle.Hide, True, 10000) Catch ex As Exception MsgBox("Error while trying to save Desktop icon positions from registry to file " + regFile + vbNewLine + ex.Message) Logger.log(FATAL, "Error while trying to save Desktop icon positions from registry to file " + regFile + vbNewLine + ex.Message) End Try End Sub
Und zum Wiederherstellen:
Private Sub restoreDesktopIconPositions() ...
Dim importCommand As String = "" Dim psi As New ProcessStartInfo ' Import Reg key from User defined position Try ' Import Reg key from User specific location importCommand = "regedit.exe /s " + regFile Shell(importCommand, AppWinStyle.Hide, True, 10000) ' Kill Explorer.exe Process Dim processList() As Process processList = Process.GetProcessesByName("explorer") For Each proc As Process In processList proc.Kill() Next ' Restart Explorer.exe ' Shell("Explorer.exe", AppWinStyle.Hide) psi.FileName = "C:\" psi.WindowStyle = ProcessWindowStyle.Minimized Process.Start(psi) Catch ex As Exception MsgBox("Error while trying to restore Desktop icon positions from file " + regFile + vbNewLine + ex.Message) Logger.log(FATAL, "Error while trying to restore Desktop icon positions from file " + regFile + vbNewLine + ex.Message) End Try End Sub
Schoenen Gruss,
Martin
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 18. Mai 2012 08:05
Alle Antworten
-
Hi Martin,
ich denk der Artikel kann dir weiter Helfen:http://www.pcwelt.de/tipps/Desktop-Icon-Layout-sichern-und-wiederherstellen-1298405.html
MFG
Björn
- Bearbeitet Thorsten DörflerModerator Freitag, 13. April 2012 15:31 URL als Link
-
Hallo Björn,
vielen Dank fuer die schnelle Antwort. Eigentlich genau das, was ich suche. Nur leider funktioniert der Registry Hack bei mir nicht (Win 7 Pro SP1). Es wird die Standardposition der Icons wiederhergestellt und nicht die Position, die sie zuvor hatten (vor dem Export des Reg Keys). Woran koennte es liegen?
Ich habe versucht mit dem Active Registry Monitor herauszufinden, welche Keys sich bei verschieben der Icons auf dem Desktop aendern, bin aber noch nicht fuendig geworden.
Schoenen Gruss,
Martin
-
Wo und wie werden also die Desktop Icon-Positionen gespeichert??
Hallo mwunderlich2,
Schau Dir mal folgenden Diskussionsfaden an.
Where does the system store the icons position?
Folgende Anwendung funktionierte bei mir in Windows 7 (64-bit Operating System):
Save and Restore Desktop Icon Layout in Windows Vista à
- C:\Program Files\DIPS64\dips64.exe S für IconSave (Save Icon Positions)
- C:\Program Files\DIPS64\dips64.exe R für IconRestore (Restore Icon Positions)
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo Robert,
Danke fuer die Antwort. Wir haben mittlerweile eine Loesung gefunden. "regFile" ist ein String mit dem Pfad zur .reg-Datei, in der die Icons gespeichert werden.
Private Sub saveDesktopIconPositions() Const baseKey As String = "Software\Microsoft\Windows\Shell\Bags" ... Dim key As RegistryKey = Nothing Dim bags() As String Dim desktopKey As RegistryKey = Nothing Dim exportCommand As String = "" Try ... ' Search for Bags/NUM/Desktop key = Registry.CurrentUser.OpenSubKey(baseKey) bags = key.GetSubKeyNames() For Each bag As String In bags desktopKey = Registry.CurrentUser.OpenSubKey(baseKey + "\" + bag + "\" + "Desktop") If Not desktopKey Is Nothing Then Exit For 'Found our Desktop key! End If Next ' Export to User specific location, overwriting existing key file exportCommand = "regedit.exe /e " + regFile + " " + desktopKey.Name Shell(exportCommand, AppWinStyle.Hide, True, 10000) Catch ex As Exception MsgBox("Error while trying to save Desktop icon positions from registry to file " + regFile + vbNewLine + ex.Message) Logger.log(FATAL, "Error while trying to save Desktop icon positions from registry to file " + regFile + vbNewLine + ex.Message) End Try End Sub
Und zum Wiederherstellen:
Private Sub restoreDesktopIconPositions() ...
Dim importCommand As String = "" Dim psi As New ProcessStartInfo ' Import Reg key from User defined position Try ' Import Reg key from User specific location importCommand = "regedit.exe /s " + regFile Shell(importCommand, AppWinStyle.Hide, True, 10000) ' Kill Explorer.exe Process Dim processList() As Process processList = Process.GetProcessesByName("explorer") For Each proc As Process In processList proc.Kill() Next ' Restart Explorer.exe ' Shell("Explorer.exe", AppWinStyle.Hide) psi.FileName = "C:\" psi.WindowStyle = ProcessWindowStyle.Minimized Process.Start(psi) Catch ex As Exception MsgBox("Error while trying to restore Desktop icon positions from file " + regFile + vbNewLine + ex.Message) Logger.log(FATAL, "Error while trying to restore Desktop icon positions from file " + regFile + vbNewLine + ex.Message) End Try End Sub
Schoenen Gruss,
Martin
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 18. Mai 2012 08:05