Laden...

Eigenschaften einer Exe-Datei auslesen

Erstellt von Blacal vor 15 Jahren Letzter Beitrag vor 15 Jahren 4.047 Views
B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 15 Jahren
Eigenschaften einer Exe-Datei auslesen

Hi,

ich hab Momentan folgendes Problem: Ich will von einer Exe-Datei die Eigenschaft "Produktname" auslesen. Über den Windowsexplorer findet man diese per Rechtsklick -> Eigenschaften -> Version -> Produktname. Die Frage ist jetzt, wie kann ich diese Eigenschaft per C# abfragen. Mit FileInfo und dem Zeugs komm ich da irgendwie net weiter.

Gruß
Roland

1.200 Beiträge seit 2007
vor 15 Jahren
using System;
using System.Reflection;

[assembly: AssemblyTitle("C#")]
[assembly: AssemblyDescription("C# Language")]

namespace AttributeExample
{
public class Program
{
public static void Main()
{
Assembly SampleAssembly = Assembly.Load(Assembly.GetExecutingAssembly().Full Name);

foreach (Attribute a in SampleAssembly.GetCustomAttributes(true))
{
if (a is AssemblyTitleAttribute)
Console.WriteLine("Assembly Title: " + (a as AssemblyTitleAttribute).Title);

if (a is AssemblyDescriptionAttribute)
Console.WriteLine("Assembly Description: " + (a as AssemblyDescriptionAttribute).Description);
}
}
}
}

Quelle: http://bytes.com/groups/net-c/276704-how-read-assemblyinfo-cs

Du willst das AssemblyProductAttribute auslesen.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 15 Jahren

hm... genau, an sowas hab ich auch schonmal gedacht.
Was mir an der Lösung net gefällt, ist, dass man dafür die komplette Assembly laden muss - Obwohl man ja eigentlich bloß diese eine Eigenschaft auslesen will.

3.971 Beiträge seit 2006
vor 15 Jahren

man dafür die komplette Assembly laden muss - Obwohl man ja eigentlich bloß diese eine Eigenschaft auslesen will

Die Eigenschaften stehen nunmal halt in der Assembly drin. Wenn du eine seperate AppDomain verwendest, kannst du auch die Assembly danach wieder entladen.

Am besten noch du verwendest zum Laden Assembly..::.ReflectionOnlyLoadFrom-Methode

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

238 Beiträge seit 2007
vor 15 Jahren

Hi,
Alternativ könntest du auch das FileVersionInfo-Objekt aus dem System.Diagnostics Namespace verwenden. Das kann auch den Produktnamen, Copyright, etc. ausgeben:

System.Diagnostics.FileVersionInfo fi = System.Diagnostics.FileVersionInfo.GetVersionInfo(Application.ExecutablePath);
Console.WriteLine(fi.ProductName);
B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 15 Jahren

Danke für die Antworten, genau sowas hab ich gesucht