Archiv der Kategorie: .NET

Code Snippet: SendKeys Sonderzeichen escapen

Heute mal ein kleiner Codeschnipsel: Wer Tastatureingaben per SendKeys simulieren möchte, muss darauf achten, dass bestimmte Zeichen „escaped“ werden müssen.

Dazu soll dieses kleine Code-Snippet dienen: Es schließt die Sonderzeichen in geschweifte Klammern ein, damit diese korrekt gesendet werden. Dank RegEx ist dies mit nur 2 Zeilen Code möglich:

Dim keysToSend As String = "Sonderzeichen wie z. B. das + oder % müssen von {geschweiften Klammern} eingeschlossen werden"

Dim regexObj As New System.Text.RegularExpressions.Regex("([{}()[\]+^~%])")
Dim escapedString As String = regexObj.Replace(keysToSend, "{$1}")

Übersetzungsfehler in der Gruppenrichtlinienverwaltung

Vor kurzem sind wir auf einen Fehler in der Gruppenrichtlinienverwaltung gestoßen, der erst einmal für Verwirrung gesorgt hat.

Wir wollten ein Zertifikat zu den Vertrauenswürdigen Herausgebern hinzufügen. Nachdem das erledigt war, wollten wir die GPO noch einmal unter dem Reiter „Einstellungen“ prüfen – doch plötzlich steht das Zertifikat unter Zertifikate nicht vertrauenswürdiger Herausgeber!?

Nach entfernen und erneutem Hinzufügen des Zertifikats immer noch das gleiche. Nach etwas grübeln kamen wir auf die Idee, dass es sich um einen Übersetzungsfehler handeln könnte. Also kurzerhand ein englisches Betriebssystem hergenommen, und siehe da:

Hier nennt sich die entsprechende Abteilung „Trusted Publisher Certificates“ – somit genau das was wir wollten 😉

Problem mit machine.config bei der Installation von .NET-Anwendungen

Folgende Fehlermeldung hatte ich vor kurzem bei der Installation einer .NET-Anwendung:

Fehler beim Analysieren von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config

Das Problem kommt daher, dass der Benutzer keine Rechte mehr auf die entsprechende Datei hat. Offensichtlich gibt es Anwendungen die die Rechte auf diese Datei „verstellen“.

Um die richtigen Berechtigungen wiederherzustellen, geht man in den Dateieigenschaften auf den Reiter Sicherheit. Um die Rechte Anzupassen, klickt man auf Erweitertet > Berechtigungen ändern > Haken setzen bei „Vererbbare Berechtigungen des übergeordneten Objekts einschließen“.

Dadurch sollte die Gruppe die Gruppe [PC-NAME]\Benutzer nun die Rechte „Lesen, Ausführen“ und „Lesen“ erhalten (vom übergeordneten Ordner erben).

Update 09.05.2014: Heute hatte ich das Problem wieder einmal, diesmal jedoch auf einem Windows 7 64 Bit Rechner. Dabei habe ich festgestellt, dass die Berechtigungsänderung evtl. auch für die Datei im 64 Bit Verzeichnis des Frameworks durchgeführt werden muss: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config

Außerdem kann nach der Änderung ein Neustart des Rechners notwendig sein, damit die Installation klappt.

Korrekte Sicherheitseinstellungen für machine.config
Korrekte Sicherheitseinstellungen für machine.config

Unter Windows XP muss evtl. die Einfache Dateifreigabe deaktiviert werden, um den Reiter „Sicherheit“ zu sehen. Siehe dazu: http://www.schneider-edv-beratung.de/xp_professional_reiter_ntfs_sicherheit_58.htm

Mittels String.Format Prozent formatieren

Ein kleiner Hinweis, wenn man in .NET mittels String.Format eine Zahl als Prozentzahl formatieren möchte:

Wenn die Formatzeichenfolge das Prozentzeichen enthält, wird die Zahl vor dem Formatieren mit 100 multipliziert. Das ist natürlich hilfreich, wenn man die Zahl als Dezimalbruch hat (z. B. 0,5 = 50%)

Will man jedoch einfach nur das Prozentzeichen anhängen, kann man das natürlich nicht gebrauchen. Dazu kann man einfach das Prozentzeichen mit einem Backslash (\) „escapen“:

String.Format("{0:###.## %}", 26)   ' ergibt: 2600 %
String.Format("{0:###.## \%}", 26)  ' ergibt: 26 %

http://msdn.microsoft.com/de-de/library/0c899ak8.aspx#SpecifierPct