Laden...

Win32SystemProcess Access

Erstellt von schaedld vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.300 Views
schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 17 Jahren
Win32SystemProcess Access

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

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

1.457 Beiträge seit 2004
vor 17 Jahren

Hast du auch Zugriff auf die Maschine mit deinen Zugangsdaten?

Ansonten sollten wir uns den Code mal anschauen!

schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 17 Jahren

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

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 17 Jahren

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

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt