myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Wie kann ich Informationen vom Betriebssystem abfragen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich Informationen vom Betriebssystem abfragen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#


ChrisProg ist offline

Wie kann ich Informationen vom Betriebssystem abfragen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

Ich verzweifle an folgendem (exemplarisch):

C#-Code:
try
{
      string version_Os = String.Empty;
     // Get the OS information.
     string os_query = "SELECT * FROM Win32_OperatingSystem";

     ManagementObjectSearcher os_searcher = new ManagementObjectSearcher(os_query);
     foreach (ManagementObject info in os_searcher.Get())
     {
         version_Os = info.Properties["Version"].Value.ToString();
     }
}
catch (System.Threading.ThreadAbortException ex) { }
catch (System.Management.ManagementException ex) { }
catch (Exception ex) { }

Ich erhalte jedesmal einen Fehler mit leerer Message(siehe Anhang...)


Wenn ich durch den Code stepe, sehe ich, das er für "ManagementObject info in os_searcher.Get()" recht lange (einige Sekunden) braucht...

Versuche ich dann auf "os_searcher.Get().Count" zuzugreifen, erhalte ich folgenden Fehler:

Fehlermeldung:
'os_searcher.Get().Count' löste eine Ausnahme des Typs 'System.Runtime.InteropServices.COMException' aus

Die Entwicklungsumgebung wird als Admin gestartet und auch der angemeldete User ist Admin ..
Das BS ist Win10 Pro



Bin für jede Hilfe dankbar ...


MfG Christian

ChrisProg hat dieses Bild (verkleinerte Version) angehängt:
Screen-2019-12-11_12-31-58.jpg
Volle Bildgröße

11.12.2019 12:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was ist denn Dein Ziel?

Die OS Version bekommst Du Systemübergreifend über Environment.OSVersion
Auf .NET Core funktioniert der Namespace soweit ich weiß erst ab 3.0.
11.12.2019 12:53 Beiträge des Benutzers | zu Buddylist hinzufügen
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#

Themenstarter Thema begonnen von ChrisProg

ChrisProg ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Mein Ziel ist es Informationen vom System zu bekommen...

Ich habe "SELECT * FROM Win32_OperatingSystem" exemplarisch genommen, um andere Fehler auszuschließen ...

Ursprünglich will ich folgendes ermitteln:
"Select * From Win32_Process Where ProcessID = " + processId ( wobei die ProcessId schon vorher ermittelt wird...)

Es ist leider ganz gleich, welchen der vielen Befehle und Möglichkeiten ich nehme, ich scheitere immer am searcher.Get().Count der nie "0" ist, sondern immer einen Fehler schmeißt ...

MfG Christian

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ChrisProg am 11.12.2019 13:01.

11.12.2019 12:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und Du bist auf was?
.NET Core 2? 3? .NET Framework? Windows...?

ManagementObject hat sehr große Einschränkungen.
zB können Windows Einstellungen und Group Policies die Verwendung von WMI beeinflussen.
11.12.2019 13:02 Beiträge des Benutzers | zu Buddylist hinzufügen
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#

Themenstarter Thema begonnen von ChrisProg

ChrisProg ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sorry ..

.NET 4.6.1 auf Windows 10

MfG Christian
11.12.2019 15:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#

Themenstarter Thema begonnen von ChrisProg

ChrisProg ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Abt:
Und Du bist auf was?
.NET Core 2? 3? .NET Framework? Windows...?

ManagementObject hat sehr große Einschränkungen.
zB können Windows Einstellungen und Group Policies die Verwendung von WMI beeinflussen.

kannst Du das eventuell näher ausführen ?

MfG Christian
11.12.2019 15:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bin kein OS Profi; weiß aber, dass WMI sehr fragil ist und am besten vermieden werden sollte, wenn möglich.
Ich weiß auch, dass WMI zickig ist, was Berechtigungen und das System betrifft - und, dass der empfohlene Weg nicht WMI ist :-)

Wenn Du also andere Möglichkeiten als WMI hast, um an Deine Infos zu kommen: nutze sie.
11.12.2019 15:53 Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.633
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Funktionieren denn andere WMI-Queries (s. z.B.  Win32 Classes)?

Du könntest auch mal das bei Windows enthaltene WBEMTest (s.  WBEMTest - Part 2: WMI queries) oder  WMI Explorer ausprobieren, ob generell WMI Abfragen auf dem Rechner funktionieren.
11.12.2019 17:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#

Themenstarter Thema begonnen von ChrisProg

ChrisProg ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Th69:

ja mit WBETest u. WMI Explorer bekomme ich Daten ...


MfG Christian

ChrisProg hat dieses Bild (verkleinerte Version) angehängt:
Screen-2019-12-12_10-49-57.jpg
Volle Bildgröße

12.12.2019 10:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.633
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dann müßtest du wohl mal in den .NET-Code hineindebuggen (ist schon etwas länger her, daß ich das mal gemacht habe - evtl. hilft:  How to: Debug .NET Framework source oder  Configure Visual Studio 2013 for debugging .NET framework [hoffentlich noch aktuell?])
12.12.2019 15:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
hummigbird1 hummigbird1 ist männlich
myCSharp.de-Mitglied

avatar-3534.jpg


Dabei seit: 10.06.2015
Beiträge: 127
Entwicklungsumgebung: Visual Studio 2013


hummigbird1 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Könnte auch am "Scope" deiner Abfrage liegen.
Bin mir nicht sicher was der Defaultscope des Management searcher objects ist.
Am besten mal in der Doku schauen.

Aber du mußt beim WBETest meines Wissens nach auch einen Scope angeben (so etwas in der Art wie: root\CIMV2)

Dementsprechend mußt du auch sicherstellen das dein Searcher auch diesen Scope benutzt.
Es gibt einen entsprechenden  Konstruktor
16.12.2019 23:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.633
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das dachte ich auch erst, aber "root\CIMV2" sollte der Default-Namespace beim Konstruktor (ohne Angabe dessen) sein - aber einen Versuch ist das natürlich wert.
Mittels  ManagementPath DefaultPath läßt sich dieser auch auslesen (bzw. setzen).
Und so läßt sich der Pfad nachträglich ermitteln:

C#-Code:
string namespacePath = managementObjectSearcher.Scope.Path.NamespacePath;
17.12.2019 09:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ChrisProg ChrisProg ist männlich
myCSharp.de-Mitglied

avatar-3533.jpg


Dabei seit: 27.01.2009
Beiträge: 152
Entwicklungsumgebung: VS 2017 C#

Themenstarter Thema begonnen von ChrisProg

ChrisProg ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Leider habe ich wieder keine Benachrichtigungen bekommen, deshalb die verspätete Antwort verwundert


Danke für die Antworten, werde mir das mal zu Gemüte führen...


MfG Christian
17.12.2019 12:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 02.07.2020 08:07