Dateiendung registrieren: Icon fehlt
-
Mittwoch, 12. September 2012 12:15
Guten Tag,
ich nutze die Dateiendung *.rbw als Format für mein Programm. Es enthalt Koordinaten und andere Inhalte (das Ganze ist natürlich verschlüsselt). Beim öffnen einer 'rbw' Datei öffnet sich mein Programm und ließt die Informationen. Das Einzige was fehlerhaft ist ist der Icon des Formats. Ich habe den Pfad überprüft und testweise auch geändert, ich habe den Icon gewechselt und Größe verändert. Es klappt einfach nicht. Der Icon hat die Größe 64x64 Pixel und außerdem ist die Funktion (unten) nicht von mir geschrieben, dass ist der Grund weswegen ich nicht weiterkomme.
Private Function Registerfile(ByVal endung As String, ByVal namedesdateityps As String, ByVal pfadzuprogramm As String, ByVal pfadzuicon As String) As Boolean Try Dim objSubKey As Microsoft.Win32.RegistryKey Dim objSubKey2 As Microsoft.Win32.RegistryKey Dim Wert As String = namedesdateityps Dim sKey As String = endung Dim sKey2 As String = endung & "\ShellNew" Dim sEntry As String = "Content Type" Dim sValue As String = "text/plain" Dim sEntry2 As String = "PerceivedType" Dim sValue2 As String = "text" Dim sEntry3 As String = "Nullfile" objSubKey = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey) objSubKey.SetValue("", Wert) objSubKey.SetValue(sEntry, sValue) objSubKey.SetValue(sEntry2, sValue2) objSubKey2 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey2) objSubKey2.SetValue(sEntry3, "") Dim objSubKey3 As Microsoft.Win32.RegistryKey Dim sKey3 As String = namedesdateityps Dim sKey4 As String = namedesdateityps & "\shell\open\command" Dim skey5 As String = namedesdateityps & "\DefaultIcon" Dim sValue3 As String = namedesdateityps Dim objSubKey5 As Microsoft.Win32.RegistryKey Dim sValue5 As String = """" + pfadzuprogramm + """" + " %1" Dim sValue6 As String = """" & pfadzuicon & """" & "%1" Dim objSubKey4 As Microsoft.Win32.RegistryKey objSubKey3 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey3) objSubKey3.SetValue("", sValue3) objSubKey4 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey4) objSubKey4.SetValue("", sValue5) objSubKey5 = My.Computer.Registry.ClassesRoot.CreateSubKey(skey5) objSubKey5.SetValue("", sValue6) Return True Catch ex As Exception Return False End Try End FunctionUnd im Formload steht :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Optionen.CheckBox1.Checked = True Then If Registerfile(".rbw", "RainbowFile", Application.StartupPath & "\RbwConverter.exe", Application.StartupPath & "\Rainbow.ico") Then Else MessageBox.Show("An error occured during the register of the Rainbow-Format." & vbCrLf & "Try to run this application with the administrator or turn the registration off [Options>Registration on/off].", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If End SubIch hoffe Sie können mir helfen.
MFG Fabian
Alle Antworten
-
Mittwoch, 12. September 2012 13:02
Hi Farbian_96,
die Methode macht nichts anderes als Einträge in der Registry zu erzeugen.
Ohne den Code wo du den Icon lädes bzw Anzeigst, kann man schwer was sagen.
MFG
Björn
-
Mittwoch, 12. September 2012 13:30Es macht für den Icon einen Eintrag : DefaultIcon . Darin ist der Pfad des Icons. Mehr ist nicht angegeben, ich würde der Datei *.rbw den Icon zuweisen also im Explorer oder auf dem Desktop soll der Icon für die Datei angezeigt werden.
-
Mittwoch, 12. September 2012 13:44
Hi Farbian_96,
ok jetzt hab ich dich, ich dachte erst in deinem Programm würde das Icon nicht Angezeigt.
Hier mal die Codezeile mit der du das machen kannst:
Registry.ClassesRoot.CreateSubKey(fileTypeName + "\\DefaultIcon").SetValue("", path + " ,0 ", Microsoft.Win32.RegistryValueKind.ExpandString);Hier die Quelle.
MFG
Björn
-
Mittwoch, 12. September 2012 14:04Es klappt immernoch nicht. Ich habe im Registrierungseditor geguckt unter dem Format ist ein Ordner DefaultIcon mit dem Pfad z.B. C:\a.ico,0
-
Mittwoch, 12. September 2012 14:55
Hi Farbian,
lösche mal den Eintrag und schau ob er beim Aufruf den gleichen Eintrag wider Erzeugt.
Wenn ja schau mal in deinem Programm nach ob zu Späteren Zeitpunkt, noch mal die Funktion aufgerufen wird nur mit dem Parameter a.ico.
MFG
Björn
-
Mittwoch, 12. September 2012 15:08Nein ich nutze diese Funktion nur 1 mal . Hab den Eintrag gelösht und nochmal gemacht.. Es will nicht ):
-
Mittwoch, 12. September 2012 15:21Es kommt dieses Bild
und das ist leider nicht mein Icon.
-
Mittwoch, 12. September 2012 15:24
Wurde der Eintrag noch mal erstellt. Mit den gleichen werten. "C:\a.ico,0"
Dann kopiere mal dein Icon nach C:\ und benenne es in a.ico um.
MFG
Björn
-
Mittwoch, 12. September 2012 15:31Hab ich getestet es klappt nicht . Ich bin ehrlich ziemlich ratlos momentan.
-
Mittwoch, 12. September 2012 15:35
Mach bitte mal einen Screeshot von der Registry.
So das der Pfad und der Wert im DefaultIcon Ordner zu sehen ist.
MFG
Björn
-
Mittwoch, 12. September 2012 15:35
Ich habe jetzt dort stehen:Registry.ClassesRoot.CreateSubKey(".rbw" + "\\DefaultIcon").SetValue("", "c:\bitte.ico" + " ,0 ", Microsoft.Win32.RegistryValueKind.ExpandString) -
Mittwoch, 12. September 2012 15:36Also zusätzlich zu den anderen Schlüsseln
-
Mittwoch, 12. September 2012 16:49Moderator
Hallo,
ich kenne ein ähnliches Problem, mit anderen Dateitypen (Word, Excel, ...) Hast du mal den PC neu gestartet? Der Windows Explorer lädt einen Cache aller Symbole, deines war beim Start da ja noch nicht drinn. Bei einem Neustart sollte in der Theorie der Cache geleert werden.
Wenn es nach einem Neustart nicht geht, könntest du ja mal versuchen die thumb.db zu löschen, wenn Sie existiert, diese Speichert Vorschaubilder für den Explorer ab (Liegt in jedem Ordner eine, also nur im Debug-Verzeichnis, o.ä.)
Bei mir hat testweise folgender Code funktioniert:
Registry.ClassesRoot.CreateSubKey(".rbw" & "\DefaultIcon").SetValue("", "C:\test.ico", Microsoft.Win32.RegistryValueKind.ExpandString)
Ich hoffe, das hilft dir weiter.
PS: warum denn ein doppelter Backslash?(".rbw" + "\\DefaultIcon")
Ich dachte du machst VB.NET, da wäre es nur \, da es nicht als Escape Sequenz gewertet wird.
Koopakiller - http://koopakiller.ko.ohost.de/
- Bearbeitet KoopakillerMicrosoft Community Contributor, Moderator Mittwoch, 12. September 2012 16:51 Frage an Fragesteller
- Als Antwort markiert Fabian89 Freitag, 14. September 2012 11:50
-
Mittwoch, 12. September 2012 17:51
Hi Koopakill,
der doppelte Blackslash kommt von deinem C# Beispiel.
Siehe den Link den ich oben gepostet habe.
MFG
Björn
-
Mittwoch, 12. September 2012 20:06Moderator
OK, so ist das schon logischer, es ist nur heimtückisch, wenn man das nicht mitbekommt und auch das + nicht vom & unterscheiden kann... so wie ich.
PS: Den Quellcode von dem Beispiel habe ich auf XP, Vista und Windows 7 erfolgreich getestet.
Koopakiller - http://koopakiller.ko.ohost.de/
-
Donnerstag, 13. September 2012 12:48
Nein es funktioniert immernoch nicht. Muss der Icon etwas bestimmtes erfüllen ? Eine bestimmte Größe vielleicht ? Ich hab es nur mit 16x16 , 32x32 und 64x64 und 100x100 getestet.
Ich habe im Registrierungseditor alles nachgelesen, die Pfaden und sonstiges stimmt alles, ich weiß echt nicht weiter.
-
Donnerstag, 13. September 2012 12:53Ich habe es grad als Test mit *.alpha getestet .. das klappt. Ich propiere es nochmals .
-
Donnerstag, 13. September 2012 13:00Also es klappt auch wenn ich .rbw im Reg.Editor in .rbwc umbenenne . Was muss ich machen damit es mit der ursprünglichen Endung .rbw funktioniert ?
-
Donnerstag, 13. September 2012 13:05Moderator
Hallo,
Bezüglich den Größen kann ich nur agen 16, 32 und 48 sind die Standartgrößen für Windows 7, die sollten auch Alpha haben. 256 Pixel ist die "Extra große Schaltflächen" Einstellung im Explorer.
Kannst du mal mein Beispiel aus der MSDN Gallery testen, den Link hatte Palin schonmal als Quelle gepostet:
http://code.msdn.microsoft.com/.../Dateiassoziationen-mit-C-41c6968eIch bin mir zwar nicht sicher, aber
Ab Windows 7 werden durch den Benutzer festgelegte programme unter HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Explorer\FileExts gespeichert. Das sollten Sie bei einer wiederherstellung der Dateiassoziationen beachten, denn diese gehen vor den unter HKEY_CLASSES_ROOT definiertes Assoziationen vor.
Vielleicht ist rbw bei dir ja schon von rgendwas mal registruiert gewesen, vlt. Testweise hast du es mal von Hand zugewiesen und erst danach den eigenen Mechanismuzs Dafür geschrieben?
Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort markiert Fabian89 Freitag, 14. September 2012 11:50
-
Donnerstag, 13. September 2012 14:33
Im Openfiledialog des Programms wird der Icon der Datei angezeigt, nur im Ordner nicht bzw auf dem Desktop.
-
Donnerstag, 13. September 2012 15:01Ich hatte vor der Registrierung eine Datei mit der Endung .rbw auf dem Computer
-
Freitag, 14. September 2012 11:49Ah ah ah Es klappt endlich. Ich bedanke mich vielmals für Ihre Hilfe.

