Laden...

Forenbeiträge von SeriouslyNot Ingesamt 13 Beiträge

03.03.2016 - 08:17 Uhr

Hi,

das Thema ist zwar schon ein paar Tage alt aber vielleicht hilft dir das ja noch.

  1. Erstelle für dein DataGridView ein Ereigniss für "RowPrePaint"


private void DataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    DateTime tmpDateWv = Convert.ToDateTime(DataGridView1["DataGridViewTextBoxColumn", e.RowIndex].Value);
    DateTime tmpDateToday = DateTime.Today;
    if (tmpDateWv < tmpDateToday.AddDays(-5))
    {
        DataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFC7CE"); // rot
    }
    else
    {
        DataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFEB9C"); // gelb
    }
}

Ist jetzt ein Beispiel aus meinem Projekt, sollte aber ohne Probleme auf deine Bedürfnisse anpassbar sein.

04.12.2014 - 09:02 Uhr

Ok ich dachte, dass ich mich bereits wieder im UI Thread befinde... Nach dem anpassen kommt folgende Fehlermeldung:

Fehlermeldung:
ExecuteReader erfordert eine geöffnete und verfügbare Connection. Der aktuelle Status der Verbindung ist 'Verbindung wird hergestellt'.

🤔

04.12.2014 - 07:59 Uhr

Hallo,

ich versuche mich gerade in das Thema Tasks einzulesen. Ich versuche in einem Task ein Tableadapter zu laden und damit ein Chart Control zu befüllen.

public Task FillAsync()
        {
            return Task.Factory.StartNew(() =>
            {
                ( this.TableAdapter.Fill(this.DataSet.Test);

                // etc
            });
        }
        public async Task RebindUI()
        {
            await FillAsync();

            this.chart1.DataSource = this.DataSet.Test;
            chart1.Series[1].YValueMembers = "id";
            chart1.Series[1].XValueMember = "anzahl";
            chart1.DataBind();
            chart1.Update();
        }

Problem ist das der Chart im GUI nichts anzeigt. Wenn ich in Einzelschritten durch den Code gehe, wird der Chart korrekt angezeigt.

16.10.2014 - 14:51 Uhr

Vielen Dank für die Hilfe. So hat es geklappt:

                
Thread threadDB = new Thread(delegate() { getDataBase(); });
threadDB.Start();

private void getDataBase()
{
this.TableAdapter.Fill(this.DataSet.Test);

comboBox1.Invoke((MethodInvoker)(() =>
                {
                    this.comboBox1.DataSource = this.DataSet.Test;
                    this.comboBox1.DisplayMember = "Name";
                    this.comboBox1.ValueMember = "ID";
                  
                }));
}
16.10.2014 - 10:52 Uhr

Hallo,

ich möchte gern eine ComboBox im Hintergrund mit Daten füllen. Mein bisheriger Ansatz sieht so aus:


Thread threadDB = new Thread(delegate() { getDataBase(); });
threadDB.Start();

private void getDataBase()
{
comboBox1.Invoke((MethodInvoker)(() => {   this.TableAdapter.Fill(this.DataSet.Test);}));
}

Leider bleibt die ComboBox leer und eine Exception gibts auch nicht. Was mache ich falsch?

24.06.2014 - 07:32 Uhr

Folgendes geht bei mir:

            var adminGroupSID = "S-1-5-32-544";  
  
            PrincipalContext ctx = new PrincipalContext( ContextType.Machine );  
            GroupPrincipal grp = GroupPrincipal.FindByIdentity( ctx, IdentityType.Sid, adminGroupSID );  

Wenns Remote nicht geht fehlen Dir wohl die Rechte.

Danke, das funktioniert - zumindest lokal. Wenn ich noch einen Host angebe, kommt folgender Fehler:

Fehlermeldung:
Die Bindungsnummer ist unzulässig.

23.06.2014 - 16:14 Uhr

Hallo,

hab das jetzt mal probiert und folgendes ist dabei entstanden:

PrincipalContext ctx = new PrincipalContext(ContextType.Machine, strHost);
            GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Sid, "S-1-5-32-544");

Leider wirft er nur folgenden Felher aus:

Unbekannter Fehler (0x80005000)

18.06.2014 - 07:08 Uhr

Guten Morgen,

ich versuche mittels u.s. Methode alle Nutzer der Gruppe Administratoren auszulesen.
Funktioniert soweit auch ganz gut, einziges Problem sind verschiedene Sprachen. Im deutschen heißt die Gruppe "Administratoren", im englischen "Administrators" etc.
Kennt ihr eine Möglichkeit, statt dem exakten Namen der Gruppe anzugeben, die ganze Sache etwas Sprachneutraler zu gestalten?

private void GetUsers(String strHost, int Line)
        {
            using (DirectoryEntry groupEntry = new DirectoryEntry("WinNT://" + strHost + "/Administratoren,group"))
            {
                int i = 0;
                foreach (object member in (IEnumerable)groupEntry.Invoke("Members"))
                {
                    using (DirectoryEntry memberEntry = new DirectoryEntry(member))
                    {
                        string fullUser = memberEntry.Path;
                        char[] strTrim = { 'W', 'i', 'n', 'N', 'T', ':', '/', '/'};
                        string shortUser = fullUser.TrimStart(strTrim);
                        user[i] = shortUser;
                        dgvItems.Rows[Line].Cells[i+2].Value = user[i];
                        i += 1;
                    }
                }
            }
        }
17.10.2013 - 09:13 Uhr

Richtig, ich habe mich vielleicht unverständlich ausgedrückt. Die Passwörter sind schon bekannt, da andere Programme bereits per runas gestartet werden und mit /savecred die Passwörter gespeichert sind. Das wollte ich mir mit runas zunutze machen.
Lösung habe ich weiter oben im Beitrag editiert.

Vielen Dank für eure Hilfe.

17.10.2013 - 09:00 Uhr

Deine Lösung funktioniert. Mein Problem war, das die Passwörter unbekannt sind und bleiben sollen. Ich kann die Leute nicht zwingen ihre Passwörter rauszurücken, damit ich Sie in eine Datei eintragen kann.

17.10.2013 - 08:42 Uhr

Das geht leider nicht, da das Programm von mehreren Personen genutzt wird, welche immer ein anderen Kennwort benutzen. Der einzige Ansatz war ohne das ein Passwort eingegeben werden muss oder hinterlegt werden müssen - runas ...

edit: Manchmal sieht man den Wald vor lauter Bäumen nicht...

Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + struser + " " + "\"C:\\Program Files\\SolarWinds\\DameWare\\DWRCC.exe -c -h -m:" + strhost + "\"");

So gehts. 😃

17.10.2013 - 07:49 Uhr

Funktioniert leider nicht.

Fehlermeldung:
Der angegebenen Datei ist keine Anwendung zugeordnet

            
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.Verb = @"cmd.exe";
            startInfo.Arguments = @"runas.exe /savecred /user:domain\user C:\\Program Files\\SolarWinds\\DameWare\\DWRCC.exe";
            Process process = new Process();
            process.StartInfo = startInfo;
            startInfo.ErrorDialog = true;
            process.Start();
16.10.2013 - 14:37 Uhr

Hallo,

ich möchte gern ein Programm als anderer Nutzer starten. Grundsätzlich erstmal kein Problem, jedoch soll kein Passwort eingegeben. Deshalb mittels "RunsAs" und /savecred. Ich dreh mich gerade absolut um Kreis und bitte um eure Hilfe.

Das war mein Ansatz:

Process.Start(@"C:\Windows\System32\runas.exe C:\Program Files\Programm.exe /arg" , @"/savecred /user:domain\user");

Vielen Dank schon mal..