LogOn Screen Changer

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von LaMiy.

    LogOn Screen Changer

    Hey!

    Ich programmiere zur Zeit einen LogOn Screen Changer, also eine Software um den Background beim "Willkommen"sscreen zu ändern.
    Also im Allgemeinen muss dafür als erstes ein Registryeintrag geändert/erstellt werden, und dann ein JPG < 256 KB in ein bestimmtes Verzeichnis kopiert werden.

    Ich habe jetzt ne Win-Form erstellt, mit einer Textbox names "Pathbox" für den Pfad, einen Button "ButtonBrowse" für einen OpenFileDialog, eine PictureBox "Picture" als Anzeige und einen Button "Change" zum Starten.

    Gedacht war jetzt, dass man nach einer Bilddatei browst, die in ein JPG umgewandelt wird und zur Not auch verkleinert um <256 KB zu werden.
    Problem Nr. 1: Nach dem Aussuchen des Bildes wird in der PictureBox das Bild nicht auf die Größe angepasst, obwohl die Eigenschaft
    Picture.BackgroundImageLayout = ImageLayout.Stretch sowohl im Code als auch in der Form eingestellt wurde.
    Problem Nr. 2: Wenn ich den Registryeinträg erstellen will, fehlen mir die Zugriffsrechte, obwohl ich als Admin angemeldet bin.
    Problem Nr. 3: Ich würde gerne als Startverzeichnis nicht "C:\Users\" & username & "\Pictures\" nehmen, sondern die Bibliothek Bilder, was müsste ich dafür eingeben?

    Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public username As String = Environment.UserName 'Username
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. PathBox.Text = "C:\Users\" & username & "\Pictures\"
    5. End Sub
    6. Private Sub ButtonBrowse_Click(sender As Object, e As EventArgs) Handles ButtonBrowse.Click
    7. Dim FOInterface As New OpenFileDialog() 'Interface for Opening Files
    8. Try
    9. With FOInterface
    10. .InitialDirectory = "Bibliotheken\Bilder" '"C:\Users\" & username & "\Pictures\" 'Start Directory"
    11. .Filter = _
    12. "Alle Bilddateien|*.jpg;*.jpeg;*.jpe;*.bmp;*.gif;*.png;*.tif;*.tiff|" & _
    13. "Alle Dateien (*.*)|*.*"
    14. .ShowDialog() 'Refresh()
    15. End With
    16. Catch ex As Exception
    17. End Try
    18. PathBox.Text = FOInterface.FileName
    19. If FOInterface.FileName <> "" Then
    20. Picture.BackgroundImageLayout = ImageLayout.Stretch
    21. Picture.Image = New Bitmap(FOInterface.FileName)
    22. End If
    23. End Sub
    24. Private Sub Change_Click(sender As Object, e As EventArgs) Handles Change.Click
    25. Dim path As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background"
    26. Try
    27. My.Computer.Registry.LocalMachine.OpenSubKey(path, True).CreateSubKey(path).SetValue("OEMBackground", "0", Microsoft.Win32.RegistryValueKind.DWord)
    28. Catch ex As Exception
    29. MsgBox(ex.Message & vbCrLf & "Administratorrechte benötigt.")
    30. End Try
    31. End Sub


    Ich hoffe ihr könnt mir helfen, DANKE !
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @ThePlexian
    Zu 3. MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)) msdn.microsoft.com/de-de/libra…onment.specialfolder.aspx
    Zu 1. PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage sollte klappen. (Tut es bei mir zumindest) msdn.microsoft.com/de-de/libra…ox.sizemode(v=vs.80).aspx
    Zu 2.
    Als Admin angemeldet sein hilft ja nix, wenn du das Programm nicht mit Admin-Rechten ausführst!
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Und du musst dein Programm unbedingt auf x64 oder AnyCPU kompilieren sonst klappt das mit der Registry nicht.

    EDIT: Und du solltest das Bild auf 250 KB reduzieren da es dort öfters Komplikationen geben kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jonas Jelonek“ ()

    Danke für die Antowrten :)

    @LaMiy
    Zu 1) Das mit der PictureBox klappt super, ich frag mich nur warum meins nicht funktioniert hat, danke ^^
    Zu 3) Das vereinfacht den Pfad zwar, ist aber auch nicht das was ich gesucht hab :/ Ich suche ja die Bibliothek und nicht den Buntzerordner :/

    @MemoAnMichSelbst
    Ist mir eig auch klar, aber wie bekomme ich das hin, dass dieser Befehl mit Admin-Rechten ausgeführt wird ? (Natürlich mit Warnung der Benutzerkontensteuerung ;) )

    Danke schon mal :)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @ThePlexian
    Du kannst zum Beispiel Deine Permission im appManifest festlegen:

    - AppManifest erzeugen Projekteigenschaften -> Anwendung -> Windows Einstellungen anzeigen
    - <requestedExecutionLevel level="requireAdministrator" uiAccess="true" /> setzen
    - UAC poppt beim Starten des Programms auf ( ohne geht es nur mit Zertifikat)

    Allerdings braucht man nicht immer volle Adminstratorrechte: feiner steuern kann man das zum beispiel mit den Security-Permission Attributen
    Hey !

    @LaMiy:
    Öffne den Explorer, und dann sind Links doch diese vier Bibliotheken "Bilder", "Dokumente", "Musik" und "Videos", wo jeweils die Pfade von dem aktuellen Benutzer und dem der Öffentlichen Benutzer angezeigt werden :) Und den will ich :D

    @programmer71:
    Okay das an sich hab ich gefunden, habs geändert und folgendes festgestellt: Nehme ich als PPPlattform "Any CPU" hat sich nichts geändert, Zugriff ist nach wie vor verweigert. Und nehme ich "x64" kommt die Meldung "Der angeforderte Registrierungszugriff ist verweigert" ?(
    Gibt es die Möglichkeit das in den Code zu fassen anstatt in die appManifest ?


    EDIT: Was meinst du mit Security-Permission Attributen ?
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais