Windows 7 Taskbar



  • Hallo zusammen,
    ich Arbeite in einem Unternehmen welches viele PC`s vertreibt die wir für unsere Anwendungen benötigen. Diese werden Kundenspezifisch eingerichtet und benötigen teilweise Kundenspezifische Einstellungen, aber auch Einstellungen die auf jedem dieser Server gleich sind.

    Dazu habe ich ein konfigurierbares Programm (.net 4.0) geschrieben welches mir die Installation des Servers mittels WindowsBoard Mitteln und selbst geschriebenen Tools ermöglicht. Das klappt auch soweit ganz gut bis auf zwei Probleme die ich leider nicht gelöst bekomme. Daher hoffe ich, dass mir hier geholfen werden kann.

    Problem Nummer eins:
    Auf dem Server müssen verschieden Benutzerprofile eingerichtet und konfiguriert werden. Dieses soll von einem Administratorprofil aus passieren, ohne das Default User Profil verändern zu können und sich in die jeweiligen zu erstellenden Profile einloggen zu müssen. Zumeist sind es einfach nur Registry-Einstellungen und bestimmte Verknüpfungen die Benötigt werden. Dazu lege ich zuerst das Profil an, bestimme die Benutzerzugehörigkeit (Admin oder User) und muss dann dafür sorgen das Windows den Benutzerordner unter C:\Users erstellt. Nun muss nur noch eines meiner selbst geschriebenen Tools als dieser Benutzer ausgeführt werden (runas) um die dann damit geladenen CurrentUser Registry verändern zu können. Das klappt bis auf zwei Probleme die, die Taskbar betreffen auch sehr gut. Hier ein Teil des Quellcodes der den Prozess ausführt und den Bentzerordner erstellt:

    System.Diagnostics.Process process = new System.Diagnostics.Process()
    {
    StartInfo = new System.Diagnostics.ProcessStartInfo()
    {
    Arguments = args, // Parameter
    CreateNoWindow = true, // Konsolenanzeige unterbinden
    FileName = file, // Programm
    LoadUserProfile = true, // User Profile soll immer geladen werden. Zugriffzeit kann mitunter länger sein
    Password = pw,
    UserName = userName,
    WorkingDirectory = Environment.SystemDirectory,
    Verb = "runas", // Sorgt dafür das Verzechnisstruktur ertellt wird bei nicht vorhanden sein
    RedirectStandardOutput = true, // Ausgabe umleiten
    RedirectStandardError = true, // Error Ausgabe umleiten
    UseShellExecute = false // Betriebssystemshell deaktivieren
    }
    };
    Kleine Anmerkung. Später werden noch die Rückgabewerte von process ausgewertet, da diese später mit in eine Ausführliche logfile fließen. Wenn nun das Benutzerprofil unter C:\Users noch nicht erstellt wurde, wird dieses von der Funktion erstellt. Habe auch Windows Api Funktionen getestet die zu exakt der gleichen Erstellung des Profil Ordners geführt haben. Mein Problem dabei: Ein paar Einstellungen Betreffen die TaskLeiste. Zuerst sollen die DateiVerknüpfungen gelöscht werden die Standardmässig beim ersten starten des Profiles dort erstellt werden. Dann muss die Einstellung getroffen werden das die Taskleiste automatisch ausgeblendet wird. Die Dateiverknüpfungen liegen unter diesem Pfad:
    C:\Users\BENUTZER\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
    Außerdem hier in der registry:
    Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband

    Hierbei sind die Probleme, das nur dieser Pfad C:\Users\BENUTZER\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
    Existiert, der restliche erst erstellt wird wenn auch das User Profil geladen wird. D.h. es gibt für mein Programm nichts zu löschen und sobald dann das userprofil das erste mal gestartet wird sind die Verknüpfungen in der Taskleiste vorhanden.

    Mit dem automatischen ausblenden verhält es sich ähnlich. Die Einstellung befindet sich auch in der reg unter diesem Schlüssel:
    Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2\ Settings

    Hier liegt ein Binärer Wert in dem nur ein Bestimmter Wert geändert werden muss. Bei meiner Methode, in der das Profil über den runas process erstellt wird, exisitiert zwar der Schlüssel bis hin zu structrects2, settings ist aber noch nicht da. Vielleicht hat ja jemand schonmal genau das gleiche Problem lösen müssen. Ich denke die einfachste Lösung ist die Funktion auszuführen welche auch Windows nutz beim ersten Profil start. Teilweise mache ich das ja schon, welche das noch sind weiß ich allerdings nicht.

    Problem Nummer zwei:
    Wie kann ich per c# die symbolleisten (links neben der Infobar) automatisiert erstellen lassen? Gibt es hier vielleicht auch eine API zu, die ich einfach nur nicht gefunden habe. Googeln hat mich hier leider auch nicht weiter gebracht.

    Schonmal vielen Dank das Ihr mein Post gelesen habt. Vielleicht kann mir der ein oder andere von euch ja weiter helfen.

    Viele Grüße

    Christian



  • Fass dich mal kurz und formatieren deinen Code vernünftig. Ansonsten habe ich jetzt nicht so die Lust mir das anzutun


Log in to reply