Entwickler-Ecke

WinForms - kompatibilitätsabfrage


Ben4123 - Fr 07.02.14 11:12
Titel: kompatibilitätsabfrage
Hallo,

Mein Tool benötigt einiges für den korrekten Betrieb.
- mind Windows 7
- Excel (Exportierungszwecke)
- Einige Rollen
- Als Admin ausführen

Meine Idee wäre in ein vorhandenes TabControl, einfach ein TAB mit Status einfügen, innerhalb des Tabs eine Listbox und dann die Infos auslesen, überprüfen und ggf auf Installation Hinweisen...

Funktioniert mein Plan so überhaupt, hat schonmal jemand so eine Art abfrage gemacht?

Bin für alle Vorschläge dankbar


Ralf Jansen - Fr 07.02.14 11:21

Windows7 und Excel wäre was für den Installer.
Was du mit Rollen in diesem Context meinst weiss ich nicht.
Und als Admin ausführen läßt sich ja per UAC mit entprechendem Manifest beim Start der Anwendung erzwingen.


Ben4123 - Fr 07.02.14 11:44

Mit Rollen meine ich
Zitat:

Rollendienste
Rollendienste sind Softwareprogramme, mit denen die Funktionalität einer Rolle bereitgestellt wird. Wenn Sie eine Rolle installieren, können Sie festlegen, welche Rollendienste für andere Benutzer und Computer in Ihrem Unternehmen mit der Rolle bereitgestellt werden.](z. B. DNS-Server)
http://technet.microsoft.com/de-de/library/cc754923.aspx


Wollte es im Installer vermeiden.

Klar lässt sich des Programm als Admin starten aber wenn man das nicht tut soll es schimpfen bzw das anzeigen.


Ralf Jansen - Fr 07.02.14 11:50

Rollen sind ein WindowsServerDing nix Windows 7.

Zitat:
Klar lässt sich des Programm als Admin starten aber wenn man das nicht tut soll es schimpfen bzw das anzeigen.


Wie gesagt forciere das per UAC.
Ein

XML-Daten
1:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />                    

im Anwendungsmanifest sollte reichen.


Ben4123 - Fr 07.02.14 16:22

Stimmt so ist es echt am Saubersten :)) Danke Danke Danke :)

Ok somit wäre das Problem mit dem Admin gelöst

Das mit Excel habe ich so gemacht.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
 public Form1()
        {
            InitializeComponent();

            Type officeType = Type.GetTypeFromProgID("Excel.Application");
            if (officeType == null)
           
            {
                
                listBox2.Items.Add("Warning Please install Microsoft Excel");
            }
            else
            {
               
                 listBox2.Items.Add.Items.Add("Excel Installed");
               
            }


nächste abfrage ist meine OS Version


C#-Quelltext
1:
2:
           OperatingSystem os = Environment.OSVersion;
           listBox2.Items.Add("OS Version: " + os.Version.ToString());


jetzt darf er mir aber nur ausgeben das die Version Ok ist ab 6.1 siehe
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx


Sprich


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
              if (OperatingSystem os <= 6.1)
            {
                
                 listBox2.Items.Add("Right OS Version Installed" + os.Version.ToString());
            }
            else
            {
                listBox2.Items.Add("No Support for this OS Verion" + os.Version.ToString());
                
               
            }


aber so geht es natürlich nicht :(
könntet ihr mir bitte helfen?


Th69 - Fr 07.02.14 17:25

Hallo,

bei der Ausgabe hast du doch auch die Eigenschaft Version benutzt, d.h. das solltest du bei der Abfrage dann auch tun (entweder mit new Version(61) vergleichen bzw. explizit mit deren Untereigenschaften Major und Minor).


Ben4123 - Di 11.02.14 09:57

ok und ganz generell muss ich die version in ein array zerlegen z.b [6] [1] um es zu vergleichen?


Th69 - Di 11.02.14 10:11

Hallo,

wie kommst du jetzt auf ein Array?
Um es abzukürzen:

C#-Quelltext
1:
2:
3:
4:
if (os.Version <= new Version(61))
{

}


Ben4123 - Di 11.02.14 11:05

dachte dass ich da str.split(".") brauch aber bin froh dass es so funktioniert vielen Dank