Laden...

Windows 7 Taskbar

Erstellt von Christian1983 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.813 Views
C
Christian1983 Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
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

1.378 Beiträge seit 2006
vor 9 Jahren

Hallo Christian1983,

also eine rudimentäre Lösung zu Problem 1 wäre ein Script in den Autostart Folder zu legen das sich selbst nach dem ersten run löscht. In dem Script kannst du dann die restlichen Aufräumarbeiten erledigen die ersten nach dem ersten Login anfallen.

Lg, XXX

U
135 Beiträge seit 2009
vor 9 Jahren

Problem 2 hab ich glaub ich nicht ganz verstanden... meinst Du die Icons im Systray neben der Uhrzeit?
Falls ja: guck Dir mal das NotifyIcon-Control an.

C
Christian1983 Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren

Erstmal Danke für die Antworten.

@xxxprod:
Diese Vairante kann ich leider nicht nutzen, es muss alles über das Installationsprogramm laufen und dann entsprechend ein feedback über success oder failed erfolgen und auswertbar sein. Es darf nicht so sein, Installations Programm abgeschlossen und dann beim erstmaligen start des Benutzers wird quasi die Installation erst abgeschlossen.

@SomeoneYouKnow:
Bitte schaue dir mal das Bild im Anhang an. Ziel ist es: Einen Ordnerpfad angeben zu können (in meinem Programm), der dann so eine Symbolleiste erstellt.

Viele Grüße