Laden...

Rechnername oder andere eindeutige Bezeichner

Erstellt von Lorgoth vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.215 Views
L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren
Rechnername oder andere eindeutige Bezeichner

Hallo,
ich habe zwar schon etwas gegooelt und im Forum gesucht, aber noch nichts gefunden.

Und zwar das Problem ist folgendes: Ich soll ein Programm erstellen, dass von einem Netzwerklaufwerk aus ausgeführt werden soll. Das Problem ist jetzt, dass die User ihre Einstellungen ändern können, sprich ich lege ein Ini File an, wenn ich jetzt nur eines anlege, überschreiben sich die User natürlich, also wollte ich mehrere anlegen und zwar immer eines pro Rechner, auf dem das Programm ausgeführt wird. Da in meiner Firma alle Rechner eine eindeutige Bezeichnung haben sollte dies ja möglich sein, nur wie komm ich an diese Bezeichnung ran?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Lorgoth,

es gibt standardisierte Vorgehensweisen. Du musst also das Rad nicht neu erfinden. Oder anderes gesagt ist die Idee mit dem Rechnernamen schlecht. 🙂

Das neue Konfigurationsmodell im .NET Framework 2.0

So oder so gehört sowas ins Profil des Benutzers: SpecialDirectories.CurrentUserApplicationData

herbivore

S
134 Beiträge seit 2005
vor 17 Jahren

Hallo,

ab Framework 2.0 wirst Du durch das Properties-Objekt unterstützt. Du kannst benutzer- und/oder rechnerspezifische Settings anlegen:


Properties.Settings.Default.MeineEigenschaft

Angelegt werden die Settings unter VS.NET 2005 unter dem Projektbaum im Oberordner "Properties" durch einen Doppelklick auf "Settings.settings". Die Werte werden in XML gespeichert und zusätzlich werden statische Funktionen im Properties-Namespace Deiner Anwendung angelegt, sodass Du ohne zusätzliches Laden (auch benutzerspezifisch) rankommst.

Schau Dir die MSDN zum Thema genauer an!

Alex

"Das Unverständlichste am Universum ist im Grunde, daß wir es verstehen." A. Einstein

3.170 Beiträge seit 2006
vor 17 Jahren

Soweit alles korrekt.
Da im Titel danach aber danach gefragt wird:

System.Environment.MachineName

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

S
134 Beiträge seit 2005
vor 17 Jahren

😁 stimmt auch wieder

"Das Unverständlichste am Universum ist im Grunde, daß wir es verstehen." A. Einstein

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Erm ja,

Ich glaub ich arbeite noch mit dem 1.1er Framework (Visual Studio 2003 & C#)

Das andere ist, dass ich die Configuration nur Rechner aber auf keinen Fall Userbasiert aufsetzten muss.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Lorgoth,

dann hast du jetzt gute Gründe umzusteigen. Für aktuelle Entwicklungen sollte man möglichst schnell auf 2.0 umsteigen.

herbivore

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Das ist hier in der Firma leider nicht ganz so einfach, da das immer ne Kostenfrage ist. Klar daheim kann ich mir meine kostenlose Studentenversion installieren aber so... hmm schade dabei sieht das ganze sehr elegant aus...

okay ich habs jetzt mit dem System.Environment.MachineName probiert und bekomm zur Laufzeit eine seltsame Sicherheitsausnahme.

string temp = System.Environment.MachineName.ToString();
label2.Text = temp;
Eine nicht behandelte Ausnahme des Typs 'System.Security.SecurityException' ist in mscorlib.dll aufgetreten.

Zusätzliche Informationen: Anforderung des Berechtigungstyps System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ist fehlgeschlagen.

3.170 Beiträge seit 2006
vor 17 Jahren

Framework 2.0 und das SDK dazu kosten 0 Euro.
Das VS 2005 ist zwar fein, aber nicht unabkömmlich...

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Lorgoth,

such bitte hier nach SecurityException.

herbivore

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Achso na dann, werd ichs mir morgen mal besorgen und reinschaun. Gibts da irgendwelche Probleme mit dem 2.0er und VS2003 oder muss ich irgendwas besonderes beachten?

S
134 Beiträge seit 2005
vor 17 Jahren

Hallo,

Original von MarsStein
Framework 2.0 und das SDK dazu kosten 0 Euro.

Das ist zwar richtig, aber meist nicht das Problem in Unternehmen. Jemand zentrales verwaltet die Software für die Clients und der Programmierer muss immer gegen den kleinsten gemeinsamen Nenner programmieren. Kann ein Lied davon singen.

Die Admins faseln meist irgendwas von Sicherheitsrisiko (:D) und meinen aber: "Ich habe keinen Bock, mich auf meine alten Tage noch mit der Framework-Konfiguration und Zertifikaten zu befassen. Programmier' es anders!".

Alex

"Das Unverständlichste am Universum ist im Grunde, daß wir es verstehen." A. Einstein

3.170 Beiträge seit 2006
vor 17 Jahren

KeineAhnung ob das 2.0 Framework mit VS2003 funktioniert, das hab ich noch nie probiert. Ich benutze VS2005 in der Firma und zu Hause SharpDevelop, der ist ziemlich gut finde ich. (Kommt aber an VS2005 auch nicht ran 😦)

Edit:
Auf jeden Fall ist es kein Problem, die beiden nebeneinander zu installieren.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo MarsStein,

KeineAhnung ob das 2.0 Framework mit VS2003 funktioniert, das hab ich noch nie probiert

Funktioniert nicht!

herbivore

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Hmm Schade, dann werd ich wohl in der Arbeit auf die "Ini - File" Methode mit den Rechnerabhängigen Namen arbeiten müssen...

Naja

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Lorgoth,

besser wäre es wohl einen benutzerabhängigen Namen zu verwenden.

herbivore

L
667 Beiträge seit 2004
vor 17 Jahren

Visual C# Express 2005 gibts bei Microsoft kostenlos als reine C#-IDE zum Download, die läuft dann auch mit .NET Framework 2.0 (VS.NET 2003 nicht).

Das Framework 2.0 bietet viele tolle Neuigkeiten, die das Programmieren mit C# sehr vereinfachen, allerdings auch einige neue Bugs. Wir haben hier testweise versucht ein bestehendes, mit Framework 1.1 entwickeltes Projekt, das seit 1 Jahr problemlos läuft, auf .NET 2.0 zu konvertieren, was zu jeder Menge Laufzeitfehler geführt hat. Besonders in Verbindung mit externen dlls kommt es offenbar zu Problemen.

Also auf jeden Fall sollte man beim Umsteigen etwas vorsichtig sein.

Wir werden erstmal weitere Neuentwicklungen mit .NET 1.1 machen, da sich das einigermaßen bewährt hat, bzw. die Bugs sind größtenteils bekannt mittlerweile. Privat daheim benutze ich aber auch schon 2.0

"It is not wise to be wise" - Sun Tzu

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Ich hatte jetzt grad noch ein Gespräch mit meinem Chef, also ich muss auf dem 1.1er Framework bleiben. Kann ich leider nix machen.

Jetzt hab ich auch weiter etwas herumprobiert und bin dabei auf ein neues Problem gestoßen. Den Fehler mit den Security Settings hatte ich kurzzeitig erstmal verschoben gehabt, in dem ich die Sicherheitseinstellungen im lokalen Intranet auf "voll vertrauen" gesetzt hatte, diese Option haben die Leute später aber nicht wenn sie das Programm dann starten, da sie keine lokalen Adminrechte haben.
In diesem Thread waren zwar schon ein paar Vorschläge zu finden. Ich habe das versucht mit Hilfe des "System.Security Namespace" zu lösen, hab aber leider keine Berechtigung gefunden die mir das auslesen des Computernamens erlaubt.
Ein anderer User hatte folgenden Vorschlag:

Original von olimlad
...
In der .NET Framework Konfiguration kannst du viele Lösungswege finden um deine Assembly als trusted einzustufen.
...

Klingt relativ genau nach dem was ich suchen würde, da das Programm auch einiges an anderen File Operationen auf den Netzwerklaufwerken veranstalten muss. Hab aber leider noch nichts genaueres dazu gefunden.

@herbivore: Die Inidateien müssen Rechnerabhängig gespeichert werden, da das Programm Geräte ansteuert, die an den Rechnern hängen, sprich auch wenn unterschiedliche User an dem Rechner sind, bleiben die Konfigurationen die ich in den Ini Dateien speichern will/muss an dem Rechner identisch.

L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

Hmm okay ich schlag mich weiterhin mit den Security Problemen herum:


try
{
System.Security.Permissions.EnvironmentPermission EnvPer = new 
	System.Security.Permissions.EnvironmentPermission(System.Security.Permissions.PermissionState.Unrestricted);

string temp = System.Environment.MachineName.ToString();
label2.Text = temp;
}
catch (Exception err)
{
l_Error.Text = err.Message.ToString();
}

Hier wird bei mir leider ein Fehler geworfen, wenn ich "MachineName" aber durch "CurrentDirectory" ersetzte funktioniert es einwandfrei...

Anforderung des Berechtigungstyps System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ist fehlgeschlagen.
L
Lorgoth Themenstarter:in
53 Beiträge seit 2005
vor 17 Jahren

So ich antworte mir noch mal selbst.

Es gibt eine relativ einfache Möglichkeit. Und zwar kann man unter Systemsteuerung -> Administrative Tools -> Microsoft .NET Framework 1.1 Configuration -> Laufzeitsicherheitsrichtline die Vertrauenstufe eines Assemblies erhöhren / direkt konfigurieren, diese Konfiguration kann man dann wiederum als MSI exportieren. Sprich bei der Programminstallation setzt man die Verstrauensstufe dieses Assemblies für diesen Rechner...

Puh ...

Ps.: Danke noch mal an alle die mir geholfen haben, hab wieder viel gelernt ^^