Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von schaedld
Thema: Konzeptionelle Frage
Am im Forum: Netzwerktechnologien

Hallo zusammen
Ich fange mal von vorne an. Kann mir einer erklären wie ich Step-by-Step (kein Code) vorgehe um folgende Funktion zu implementieren?

1. Socket öffnen
2. Damit ich dann einen Broadcast senden kann
3. Einen TcpClient mit einem Wake aufwecken kann.

Was muss ich beachten und was muss ich Schritt für Schritt festlegen, damit ich zum Ziel komme.

Würde mich um Hilfestellungen sehr freuen und danke euch bereits.

Grüss
Daniel

Thema: Socket Error / Connection refused
Am im Forum: Netzwerktechnologien

Hallo zusammen

Ich versuche gerade einen Client remote über die IP-Adresse zu wecken. Dazu habe ich die Clients aus einer Datenbank abgefragt und dann jeden String in die IP-Adresse auflösungen lassen.

Leider bekomme ich einen Socket Error ConnectionRefused. An was kann dies liegen? Ich versuche über Port 53 ein WakeSignal zu senden. Muss ich den Client eventuell sonst noch irgendwie ansprechen?

Hier die Wake-Up Methode für den /die Clients


                    foreach (String str in OraList)
                    {
                        ips = Dns.GetHostAddresses(str);
                        foreach (IPAddress ip in ips)
                        {
                            Console.Write(ip + "\n");
                            TcpClient WakeClient = new TcpClient();
                            WakeClient.Connect(ip, 80);
                        
                        }
                    }
                }

würde mich auf Hilfe sehr freuen.
grüsse
daniel

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

wie mache ich dass? (sorry für die blöde Frage)

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

Diesen Fehler hier erhalte ich:

System.Management.ManagementException {"Ungültiger Namespace\r\n"}

Ich bin mir nicht sicher, aber wo hat der dass Problem? Mein WMI Verzeichnis ist doch richtig im Code

\\\\%servername%\\root\\CIMV2...

Gruss
Daniel

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

ich hab den Fehler im Original auch nicht abgefangen, aber den ganzen Code im

if(PostBack) reingeschrieben.

Vorher Code (vorherige Version, ohne Exception Handler)


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Management;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class WMI : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        WMIRequired.Text = "Bitte geben Sie Ihre Suchkriterien ein. Es kann als Hostname auch die IP-Adresse angegeben werden";

        if (IsPostBack)
        {
            string WMIHost;
            WMIHost = WMITxt.Text;

            ConnectionOptions WMIConnect = new ConnectionOptions();
            WMIConnect.Impersonation = System.Management.ImpersonationLevel.Impersonate;

            ManagementScope WMIMgmtScope;
            WMIMgmtScope = new ManagementScope(new ManagementPath("\\\\" + WMIHost + "\\root\\CIMV2"), WMIConnect);

            /* Damit die Daten nicht von einer DB kommen müssen wird eine DataTable im Arbeitsspeicher generiert
             * 1. Die DataTable wird initiiert und der Name wird vergeben
             * 2. Die Spalten müssen festgelegt werden, im ersten Schritt mit null initiiert und in einem weiteren
             *    Schritt werden den einzelnen Spalten Überschriften vergeben.
             * 3. Die DataRow muss dann auch mit null initiiert werden.
             * 4. Damit alle Objekte des ManagementObjectCollection als Row angelegt werden, wird die Wenge
             *    mit einer foreach-Schleife für die sequentielle Hinzufügung von Rows verwendet.
             * 5. Die Rows müssen Namen aufweisen, diese müssen dann im DataView angegeben werden
             * 6. Ist die DataTable erstellt so wird sie mit der Default View an ein DataGrid o. ä. gebunden.
             * 7. Danach wird das Grid selbst an die Datenbindung gebunden.
             */

            ObjectQuery WMIQuery = new ObjectQuery("Select * from Win32_NTLogEvent where SourceName='DCOM'");
            ManagementObjectSearcher WMISrch = new ManagementObjectSearcher(WMIMgmtScope, WMIQuery);
            ManagementObjectCollection WMIMenge = WMISrch.Get();

            DataTable WMIDataTable = new DataTable("WMI Ergebnisse");
            DataColumn WMIDataColu = null;
            DataRow WMIDataRow = null;

            WMIDataColu = WMIDataTable.Columns.Add("Event Code");
            WMIDataColu = WMIDataTable.Columns.Add("ComputerNa");
            WMIDataColu = WMIDataTable.Columns.Add("Quelle");
            WMIDataColu = WMIDataTable.Columns.Add("Message");
                    
            
            foreach (ManagementObject man in WMIMenge)
            {
                WMIDataRow = WMIDataTable.NewRow();
                WMIDataRow["Event Code"] = man["EventCode"];
                WMIDataRow["ComputerNa"] = man["ComputerName"];
                WMIDataRow["Quelle"] = man["SourceName"];
                WMIDataRow["Message"] = man["Message"];
                WMIDataTable.Rows.Add(WMIDataRow);
            }
                        
            GridView1.DataSource = WMIDataTable.DefaultView;
            GridView1.DataBind();
        }
        
    }
    protected void WMIBtn_Click(object sender, EventArgs e)
    {
             
    }
   
}


und hier der Code, welcher eigentlich mit den gleichen Parametern arbeitet, aber in Methoden unterteilt ist.


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Management;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class WMI2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        reqCli.Text = "Bitte geben Sie den Host an (IP oder Hostname)";
        reqPass.Text = "Bitte geben Sie ihr Passwort zu ihrem Benutzeraccount an";
        reqUser.Text = "Bitte geben Sie ihre Benutzerkennung an";

        if (IsPostBack)
        {
            ManagementDefinitions();
            ManagementScopeDefinitions();
            Tabellen_Erstellung();
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {

    }

    protected ManagementObjectCollection ManagementDefinitions()
    {
        /* In dieser Methode werden die WMI Abfragen und die Konstruktoren für die Objekt Menge
         * festgelegt, sodass sie anderweitig nur per Prozeduraufruf zur Verfügung stehen.
         * WMIWarning = WMI-Query welches die Typen gemäss selektierter Checkbox abfragt
         * WMIObjSrch = Ein ManagementObjectSearcher der das WMI Repository nach den Query Krietieren
         * abfrägt.
         * WMITotal = Ista dass Ergebnis aus der WMIObjSrch Routine.
        */


        ManagementScope WMIScope = ManagementScopeDefinitions();
        WqlObjectQuery WMIWarning = new WqlObjectQuery("Select * from Win32_NTLogEvent where Type=" + "'" + EventLevel + "'");
        ManagementObjectSearcher WMIObjSrch = new ManagementObjectSearcher(WMIScope, WMIWarning);
        ManagementObjectCollection WMITotal = WMIObjSrch.Get();
        
        /*
         * Damit die Variable WMITotal auch in anderen Methoden verwendet werden kann wird sie hier mit einem
         * Return Wert versehen, der dann in einer anderen x-belibiegen Mehtode wieder abgeholt, oder besser gesagt
         * dessen Wert abgefragt werden kann.
         */ 
        return WMITotal;
    }

    protected ManagementScope ManagementScopeDefinitions()
    {
        string WMIHostname = txtCli.Text;
        string WMIUsername = txtUserna.Text;
        string WMIPassword = txtPass.Text;
        
        ConnectionOptions WMIConnectivity = new ConnectionOptions();
        WMIConnectivity.Impersonation = ImpersonationLevel.Impersonate;
        //WMIConnectivity.Username = WMIUsername;
        //WMIConnectivity.Password = WMIPassword;

        ManagementPath WMIPath = new ManagementPath(WMIHostname + "\\root\\CIMV2");
                
        ManagementScope WMIScope = new ManagementScope(WMIPath, WMIConnectivity);
        return WMIScope;
    }

    protected void Tabellen_Erstellung()
    {
        /* Diese Methode erstellt folgende Elemente:
         * 1. Mit der DataTable wird eine neue DatenTabelle mit dem Namen WMITabelle erstellt. Diese heisst
         *    Eventlog Abfrage.
         * 2. Anschliessend werden die Spalten (WMISpalte) erstellt und mit keinem Wert initialisiert.
         * 3. Danach werden die Zeilen (WMITabeZeile) erstellt und auch hier werden keine Werte initialisiert.
         * 4. Nun werden die einzelnen Spalten der Tabelle, samt Spaltenüberschrift hinzugefügt.
         *    WMISpalte = WMITabelle.Columns.Add("Ereignis ID");
        */

        DataTable WMITabelle = new DataTable("Eventlog Abfrage");
        DataColumn WMISpalte = null;
        DataRow WMITabeZeile = null;

        WMISpalte = WMITabelle.Columns.Add("Ereignis ID");
        WMISpalte = WMITabelle.Columns.Add("Computername");
        WMISpalte = WMITabelle.Columns.Add("Quelle");
        WMISpalte = WMITabelle.Columns.Add("Beschreibung");
        
        /* Die ManagementObjectCollection wird hier referenziert, da diese in der Mehtode ManagementDefinitions()
         * als return-Wert angegeben wird. Durch diesen Schrittkann die Variable WMITotal auch in dieser hier
         * erstellten Methode verwendet werden.
        */ 
        ManagementObjectCollection WMITotal = ManagementDefinitions();
        
        foreach (ManagementObject ob in WMITotal)
        {
            WMITabeZeile = WMITabelle.Rows.Add();
            WMITabeZeile["Ereignis ID"] = ob["EventID"];
            WMITabeZeile["Computername"] = ob["ComputerName"];
            WMITabeZeile["Quelle"] = ob["SourceName"];
            WMITabeZeile["Beschreibung"] = ob["Message"];
            WMITabelle.Rows.Add(WMITabeZeile);
        }

        WMI2GrdVw.DataSource = WMITabelle.DefaultView;
        WMI2GrdVw.DataBind();
    }
}


Danke für die Hilfe. Eventuell kann es sein dass die return Werte falsch sind?

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

Diese Fehler erhalte ich im Browser:

Serverfehler in der Anwendung /EventLog.
Ungültiger Namespace
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: System.Management.ManagementException: Ungültiger Namespace


Quellfehler:

Zeile 47: WqlObjectQuery WMIWarning = new WqlObjectQuery("Select * from Win32_NTLogEvent where Type=" + "'" + EventLevel + "'");
Zeile 48: ManagementObjectSearcher WMIObjSrch = new ManagementObjectSearcher(WMIScope, WMIWarning);
Zeile 49: ManagementObjectCollection WMITotal = WMIObjSrch.Get();
Zeile 50:
Zeile 51: /*


Quelldatei: d:\Visual Studio 2005\EventLog\WMI2.aspx.cs Zeile: 49

Stapelüberwachung:

[ManagementException: Ungültiger Namespace
]
System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) +219
System.Management.ManagementScope.InitializeGuts(Object o) +842
System.Management.ManagementScope.Initialize() +238
System.Management.ManagementObjectSearcher.Initialize() +215
System.Management.ManagementObjectSearcher.Get() +72
WMI2.ManagementDefinitions() in d:\Visual Studio 2005\EventLog\WMI2.aspx.cs:49
WMI2.Page_Load(Object sender, EventArgs e) in d:\Visual Studio 2005\EventLog\WMI2.aspx.cs:24
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +31
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +68
System.Web.UI.Control.OnLoad(EventArgs e) +88
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3035


Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.42; ASP.NET-Version:2.0.50727.42

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

Er sagt mir nicht welcher. Den System.Management Namespace habe ich bereits importiert...

Der Code ist gleich aufgebaut wie ein Beispiel von mir im Win32System... Thema, aber mit mehreren Methoden versehen.

Er hat ein Problem beim WMISrch.get().

Ich frage mich ob er den WMI-Namespace meint oder den von C#

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

ich habe die DLL nun mit einem Verweis hinzugefügt, aber leider immer noch dasselbe Ergebnis...

Thema: ..Namespace nicht vorhanden
Am im Forum: Web-Technologien

Hallo zusammen

Ich habe meinen Code, so hoffe ich, ein wenig optmiert und versucht für einzelne Schritte auch Methoden zu schreiben. Bis der WMISearcher die Enumeration der Objekte erledigen soll klappt alles, aber dann sagt er mir Namespace nicht gefunden... Kann mir bitte jemand weiterhelfen? Danke schon im Voraus für eure Mühe. Hier noch mein Code...


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Management;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class WMI2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        reqCli.Text = "Bitte geben Sie den Host an (IP oder Hostname)";
        reqPass.Text = "Bitte geben Sie ihr Passwort zu ihrem Benutzeraccount an";
        reqUser.Text = "Bitte geben Sie ihre Benutzerkennung an";

        if (IsPostBack)
        {
            ManagementScopeDefinitions();
            ManagementDefinitions();
            Tabellen_Erstellung();
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {

    }

    protected ManagementObjectCollection ManagementDefinitions()
    {
        /* In dieser Methode werden die WMI Abfragen und die Konstruktoren für die Objekt Menge
         * festgelegt, sodass sie anderweitig nur per Prozeduraufruf zur Verfügung stehen.
         * WMIWarning = WMI-Query welches die Typen gemäss selektierter Checkbox abfragt
         * WMIObjSrch = Ein ManagementObjectSearcher der das WMI Repository nach den Query Krietieren
         * abfrägt.
         * WMITotal = Ista dass Ergebnis aus der WMIObjSrch Routine.
        */

        string EventLevel = drpWerte.SelectedItem.ToString();
        Response.Write(EventLevel);

        ManagementScope WMIScope = ManagementScopeDefinitions();
        WqlObjectQuery WMIWarning = new WqlObjectQuery("Select * from Win32_NTLogEvent where Type=" + "'" + EventLevel + "'");
        ManagementObjectSearcher WMIObjSrch = new ManagementObjectSearcher(WMIScope, WMIWarning);
        ManagementObjectCollection WMITotal = WMIObjSrch.Get();
        
        /*
         * Damit die Variable WMITotal auch in anderen Methoden verwendet werden kann wird sie hier mit einem
         * Return Wert versehen, der dann in einer anderen x-belibiegen Mehtode wieder abgeholt, oder besser gesagt
         * dessen Wert abgefragt werden kann.
         */ 
        return WMITotal;
    }

    protected ManagementScope ManagementScopeDefinitions()
    {
        string WMIHostname = txtCli.Text;
        string WMIUsername = txtUserna.Text;
        string WMIPassword = txtPass.Text;
        
        ConnectionOptions WMIConnectivity = new ConnectionOptions();
        //WMIConnectivity.Username = WMIUsername;
        //WMIConnectivity.Password = WMIPassword;

        ManagementPath WMIPath = new ManagementPath(WMIHostname + "\\root\\CIMV2");
        WMIConnectivity.Impersonation = ImpersonationLevel.Impersonate;
        
        ManagementScope WMIScope = new ManagementScope(WMIPath, WMIConnectivity);
        return WMIScope;
    }

    protected void Tabellen_Erstellung()
    {
        /* Diese Methode erstellt folgende Elemente:
         * 1. Mit der DataTable wird eine neue DatenTabelle mit dem Namen WMITabelle erstellt. Diese heisst
         *    Eventlog Abfrage.
         * 2. Anschliessend werden die Spalten (WMISpalte) erstellt und mit keinem Wert initialisiert.
         * 3. Danach werden die Zeilen (WMITabeZeile) erstellt und auch hier werden keine Werte initialisiert.
         * 4. Nun werden die einzelnen Spalten der Tabelle, samt Spaltenüberschrift hinzugefügt.
         *    WMISpalte = WMITabelle.Columns.Add("Ereignis ID");
        */

        DataTable WMITabelle = new DataTable("Eventlog Abfrage");
        DataColumn WMISpalte = null;
        DataRow WMITabeZeile = null;

        WMISpalte = WMITabelle.Columns.Add("Ereignis ID");
        WMISpalte = WMITabelle.Columns.Add("Computername");
        WMISpalte = WMITabelle.Columns.Add("Quelle");
        WMISpalte = WMITabelle.Columns.Add("Beschreibung");
        
        /* Die ManagementObjectCollection wird hier referenziert, da diese in der Mehtode ManagementDefinitions()
         * als return-Wert angegeben wird. Durch diesen Schrittkann die Variable WMITotal auch in dieser hier
         * erstellten Methode verwendet werden.
        */ 
        ManagementObjectCollection WMITotal = ManagementDefinitions();
        
        foreach (ManagementObject ob in WMITotal)
        {
            WMITabeZeile = WMITabelle.Rows.Add();
            WMITabeZeile["Ereignis ID"] = ob["EventID"];
            WMITabeZeile["Computername"] = ob["ComputerName"];
            WMITabeZeile["Quelle"] = ob["SourceName"];
            WMITabeZeile["Beschreibung"] = ob["Message"];
            WMITabelle.Rows.Add(WMITabeZeile);
        }

        WMI2GrdVw.DataSource = WMITabelle.DefaultView;
        WMI2GrdVw.DataBind();
    }
}

Wäre um jede Hilfe sehr dankbar.
Gruss

Daniel

Thema: Win32SystemProcess Access
Am im Forum: Web-Technologien

kann mir wirklich bei einer catch Antweisung helfen oder besserer Code Struktur?

Thema: Win32SystemProcess Access
Am im Forum: Web-Technologien

Mit folgendem Code funktionierts. Leider stimmt meine Catch Anweisung nicht, sodass er bei der ComException fällt. Will heissen wenn der angesprochene Client nicht verfügbar ist schmiert mein Programm ab.


public partial class WMI : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        WMILbl.Text = "Bitte geben Sie Ihre Suchkriterien ein. Es kann als Hostname auch die IP-Adresse angegeben werden";

        if (IsPostBack)
        {
            string WMIHost;
            WMIHost = WMITxt.Text;

            ConnectionOptions WMIConnect = new ConnectionOptions();
            WMIConnect.Impersonation = System.Management.ImpersonationLevel.Impersonate;

            ManagementScope WMIMgmtScope;
            WMIMgmtScope = new ManagementScope(new ManagementPath("\\\\" + WMIHost + "\\root\\CIMV2"), WMIConnect);

            /* Damit die Daten nicht von einer DB kommen müssen wird eine DataTable im Arbeitsspeicher generiert
             * 1. Die DataTable wird initiiert und der Name wird vergeben
             * 2. Die Spalten müssen festgelegt werden, im ersten Schritt mit null initiiert und in einem weiteren
             *    Schritt werden den einzelnen Spalten Überschriften vergeben.
             * 3. Die DataRow muss dann auch mit null initiiert werden.
             * 4. Damit alle Objekte des ManagementObjectCollection als Row angelegt werden, wird die Wenge
             *    mit einer foreach-Schleife für die sequentielle Hinzufügung von Rows verwendet.
             * 5. Die Rows müssen Namen aufweisen, diese müssen dann im DataView angegeben werden
             * 6. Ist die DataTable erstellt so wird sie mit der Default View an ein DataGrid o. ä. gebunden.
             * 7. Danach wird das Grid selbst an die Datenbindung gebunden.
             */

            ObjectQuery WMIQuery = new ObjectQuery("Select * from Win32_NTLogEvent where SourceName='DCOM'");
            ManagementObjectSearcher WMISrch = new ManagementObjectSearcher(WMIMgmtScope, WMIQuery);
            ManagementObjectCollection WMIMenge = WMISrch.Get();

            DataTable WMIDataTable = new DataTable("WMI Ergebnisse");
            DataColumn WMIDataColu = null;
            DataRow WMIDataRow = null;

            WMIDataColu = WMIDataTable.Columns.Add("Event Code");
            WMIDataColu = WMIDataTable.Columns.Add("ComputerNa");
            WMIDataColu = WMIDataTable.Columns.Add("Quelle");
            WMIDataColu = WMIDataTable.Columns.Add("Message");
                    
            
            foreach (ManagementObject man in WMIMenge)
            {
                WMIDataRow = WMIDataTable.NewRow();
                WMIDataRow["Event Code"] = man["EventCode"];
                WMIDataRow["ComputerNa"] = man["ComputerName"];
                WMIDataRow["Quelle"] = man["SourceName"];
                WMIDataRow["Message"] = man["Message"];
                WMIDataTable.Rows.Add(WMIDataRow);
            }
                        
            GridView1.DataSource = WMIDataTable.DefaultView;
            GridView1.DataBind();
        }
        
    }
    protected void WMIBtn_Click(object sender, EventArgs e)
    {
             
    }
   
}

Danke für eure Hilfe...
Gruss
Schaedld

Thema: Win32SystemProcess Access
Am im Forum: Web-Technologien

in einem anderen Post habe ich meinen Code für ne Remote WMI Abfrage gepostet. Nun konnte ich ihn dank eurer Hilfe so abändern, dass er auch funktioniert (bis zu einem gewissen Part).

Wenn er dann die WMI-Abfrage auf dem entfernten Client durchführen will, krieg ich einen Win32ServiceProcess Access denied Meldung, obwohl ich beim Verbinden mich "Impersonate" und auch mit User-ID und Passwort daherkomme...

Wäre sehr froh wenn jemand von euch einen Ansatz wüsste...

Danke schon im Voraus und Gruss

Daniel

Thema: WMI (remote Anfragen)
Am im Forum: Web-Technologien

Wie würde ich dann, wenn meine These stimmt, die Werte vor dem Submit wieder abfragen können, wenn die Page wieder geladen wird (mit den Ergebnissen).

Session oder Cookies? oder bin auf dem Holzweg?

Danke für die Unterstützung

Thema: WMI (remote Anfragen)
Am im Forum: Web-Technologien

Moment... wenn ich den Button drücke dann macht er ja einen Reload und leert mir dann die Felder.

Kann es sein, dass er die Werte nicht mitnimmt?

Load Page -> gebe meine Angaben ein -> Submit -> verliert meine Angaben?

Wie würde ich dass den am Besten bewerkstelligen, wenn dies das Problem sein könnte...

Thema: WMI (remote Anfragen)
Am im Forum: Web-Technologien

Nicht dass ich wüsste. Die Abfrage liefert mir leider keine Ergebnisse zurück, ich weiss aber dass da welche sein müssen....

Thema: WMI (remote Anfragen)
Am im Forum: Web-Technologien

eigentlich logisch ich Dödel =)

Musste aber mein Query ändern und nicht vom Typ String...


        ObjectQuery  WMIQuery = new ObjectQuery("Select EventCode, SourceName, ComputerName, Message from Win32_NTLogEvent where SourceName='DCOM'");
        ManagementObjectSearcher WMISrch = new ManagementObjectSearcher(WMIMgmtScope, WMIQuery);
        ManagementObjectCollection WMIMenge = WMISrch.Get();

Ich krieg aber kein Ergebnis raus, obwohl ich eine bekannte Fehlerquelle (noch) hardvercodet angebe DCOM. Ist sonst alles in Ordnung. Notation etc.?

Danke für eure Hilfe.

Thema: WMI (remote Anfragen)
Am im Forum: Web-Technologien

Hallo zusammen
Da ich die DataTable nun begriffen habe, wollte ich meine WMI Abfragen ein bisschen genereller gestalten, sodass ich x ein Host auswählen kann. Leider funktioniert dies nicht ganz, ich bekomme zwar keine Error-Meldung, aber auch keine Ergebnisse obwohl ich weiss dass da welche vorhanden sind:



protected void WMIBtn_Click(object sender, EventArgs e)
    {
        /* Beschreibung des Source Codes
        * 1. der WMI Queri ruft die angegebenen Parameter über ein Select Queryim WMI Repository auf
        * 2. Der ObjectSearcher ruft im WMI-Repository alle Objekte auf die dem Query entsprechen
        * 3. Die ManagementCollection stellt das Ergebnis das
        * 4. Eine Textbox für den Input wird erstellt, damit ein eingegebener Wert abgefragt werden kann
        * 5. Der Button führt dann die Abfrage aus
        * 6. Zusätzlich muss eine Verbindung aufgebaut werden.
        */

        string WMIHost;
        string Loginna;
        string Loginpw;

        Loginna = WMIUserName.Text;
        Loginpw = WMIUserPass.Text;

        WMIHost = WMITxt.Text;
        string Scopepath = "\\" + WMIHost + "\\root\\CIMV2\\";

        ConnectionOptions WMIConnect = new ConnectionOptions();

        WMIConnect.Username = Loginna;
        WMIConnect.Password = Loginpw;

        ManagementScope WMIMgmtScope = new ManagementScope();
        WMIMgmtScope = new ManagementScope(WMIHost + (new ManagementPath("\\root\\CIMV2\\")), WMIConnect);


        /* Damit die Daten nicht von einer DB kommen müssen wird eine DataTable im Arbeitsspeicher generiert
         * 1. Die DataTable wird initiiert und der Name wird vergeben
         * 2. Die Spalten müssen festgelegt werden, im ersten Schritt mit null initiiert und in einem weiteren
         *    Schritt werden den einzelnen Spalten Überschriften vergeben.
         * 3. Die DataRow muss dann auch mit null initiiert werden.
         * 4. Damit alle Objekte des ManagementObjectCollection als Row angelegt werden, wird die Wenge
         *    mit einer foreach-Schleife für die sequentielle Hinzufügung von Rows verwendet.
         * 5. Die Rows müssen Namen aufweisen, diese müssen dann im DataView angegeben werden
         * 6. Ist die DataTable erstellt so wird sie mit der Default View an ein DataGrid o. ä. gebunden.
         * 7. Danach wird das Grid selbst an die Datenbindung gebunden.
         */

        String WMIQuery = "Select EventCode, SourceName, ComputerName, Message from Win32_NTLogEvent where SourceName='DCOM'";
        ManagementObjectSearcher WMISrch = new ManagementObjectSearcher(WMIQuery);
        ManagementObjectCollection WMIMenge = WMISrch.Get();

        DataTable WMIDataTable = new DataTable("WMI Ergebnisse");
        DataColumn WMIDataColu = null;
        DataRow WMIDataRow = null;

        WMIDataColu = WMIDataTable.Columns.Add("Event Code");
        WMIDataColu = WMIDataTable.Columns.Add("ComputerNa");
        WMIDataColu = WMIDataTable.Columns.Add("Quelle");
        WMIDataColu = WMIDataTable.Columns.Add("Message");


        foreach (ManagementObject man in WMIMenge)
        {
            WMIDataRow = WMIDataTable.NewRow();
            WMIDataRow["Event Code"] = man["EventCode"];
            WMIDataRow["ComputerNa"] = man["ComputerName"];
            WMIDataRow["Quelle"] = man["SourceName"];
            WMIDataRow["Message"] = man["Message"];
            WMIDataTable.Rows.Add(WMIDataRow);
        }

        GridView1.DataSource = WMIDataTable.DefaultView;
        GridView1.DataBind(); 
    }
}


Nun vielleicht hab ich mit der Notation einen Fehler, habe aber leider nichts gefunden, weder im Web noch hier im Forum. Danke für eure Hilfe.

Gruss
Dani

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

Danke euch für die Hilfe. Ich hab den Wald vor lauter Bäumen nicht gesehen und bin dann nach dem Schema vorgegangen.

Columns, Rows und Tabelle festgelegt und dann die Tabellenwerte als Datenquelle für das DataView Element gebraucht.

Nun funktionierts Danke.

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

Wäre für Hilfe sehr dankbar...

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

folgender Code wird zwar kompiliert aber die Werte werden nicht in die entsprechenden Columns geschrieben:


        String WMIQuery = "Select EventCode, SourceName, ComputerName, Message from Win32_NTLogEvent where SourceName='DCOM'";
        ManagementObjectSearcher WMISrch = new ManagementObjectSearcher(WMIQuery);
        ManagementObjectCollection WMIMenge = WMISrch.Get();
        DataTable WMIDataTable = new DataTable("WMI Ergebnisse");
        
        WMIDataTable.Columns.Add("Computername");
        WMIDataTable.Columns.Add("Event ID");
        WMIDataTable.Columns.Add("Quelle");
        WMIDataTable.Columns.Add("Message");
        DataSet WMIDataSet = new DataSet();
        WMIDataSet.Tables.Add(WMIDataTable);

        foreach (ManagementObject man in WMIMenge)
        {
            man["ComputerName"] = WMIDataTable.Columns["Computername"].DataType.ToString();
        }

        GridView1.DataSource = WMIDataSet;
        GridView1.DataBind();

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

Das hat folgendermassen auch funktioniert (auf jedenfall habe ich keinen Fehler).

Folgenden Code habe ich erstellt:



        WMIDataTable.Columns.Add("Computername");
        WMIDataTable.Columns.Add("Event ID");
        WMIDataTable.Columns.Add("Quelle");
        WMIDataTable.Columns.Add("Message");
        DataSet WMIDataSet = new DataSet();
        WMIDataSet.Tables.Add(WMIDataTable);

        GridView1.DataSource = WMIDataSet;
        GridView1.DataBind();


Ich gehe die Objekte im WMI durch und möchte diese dann von der WMI ManagementObjectCollection die Werte die ich abgefragt habe in die Tabelle speichern. Nun müsste ich ja dies folgendermassen bewerkstelligen.



foreach(ManagementObject man in WMIMenge.Get())
{
          Interative Füllung der Tabellenfelder
}
{/CSHARP]

Danke für weitere Tipps.

Gruss
Daniel

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

Danke frisch

Hmm, dann kann ich das DataSet wie gewohnt erstellen?

DataSet WMISet = new DataSet()

Eine DataTable habe ich noch nie erstellt (oder nicht absichtlich).

Thema: DataView ohne Datenbank
Am im Forum: Web-Technologien

Hallo zusammen
Ich bin neu und bin momentan an einem Problem, dessen Lösung ich leider nicht mehr ganz so sehe. Darum wäre ich für Hilfe sehr dankbar.

Ziel ist es eine WMI Abfrage von C# aus (ASP.NET) zu tätigen, die Ergebnisse dann in einer foreach Schleife ausgeben und dann die Spalten, Attributnamen an das DataView binden möchte.

leider erhalte ich nach der versuchten Kompilierung den Fehler "Datenquelle verfügt nicht über die von Ihnen angegebene Datenquelle".

Danke für eure Hilfe.

Gruss
Daniel