danke Khalid. Gestern bin ich auch noch auch darauf gestoßen.
Ich habe es jetzt mit SMO gelöst.
Hier der Code:
using (sqlConnection = new SqlConnection(connectionString))
{
var serverConnection = new ServerConnection(sqlConnection);
var server = new Server(serverConnection);
var login = new Login(server, username) { LoginType = LoginType.SqlLogin };
login.ChangePassword(oldPassword, newPassword);
}
Der Code ist durch SMO an der Stelle auch bisschen kompakter geworden.
Von mir aus ist das Thema erledigt. Thread kann geschloßen werden.
wenn ich versuche aus C# heraus mittels "Alter Login" das Passwort eines SQL User zu ändern bekomme ich immer folgende Meldung "System.Data.SqlClient.SqlException (0x80131904): Falsche Syntax in der Nähe von 'PASSWORD'."
Hier ist mal mein Code:
using (sqlConnection = new SqlConnection(connectionString))
{
//var sqlCommand = new SqlCommand("ALTER LOGIN [@username] WITH PASSWORD=[@password]", sqlConnection);
var sqlCommand = new SqlCommand("ALTER LOGIN [@username] WITH PASSWORD = [@password] OLD_PASSWORD = [@oldPassword]", sqlConnection);
sqlCommand.Parameters.Add("@username", SqlDbType.NVarChar);
sqlCommand.Parameters["@username"].Value = username;
sqlCommand.Parameters.Add("@password", SqlDbType.NVarChar);
sqlCommand.Parameters["@password"].Value = newPassword;
sqlCommand.Parameters.Add("@oldPassword", SqlDbType.NVarChar);
sqlCommand.Parameters["@oldPassword"].Value = oldPassword;
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
Der Commandtext sieht wie folgt aus:
"ALTER LOGIN [@username] WITH PASSWORD = [@password] OLD_PASSWORD = [@oldPassword]".
Leider erkenne ich dabei keinen Fehler.
Noch ein Anmerkung. Ich ändere nicht den momentan angemeldeten User, sondern einen anderen SQL-User.
irgenwie verstehe ich die Teilnahmebedingungen nicht. Microsoft schreibt das auch Privatpersonen ohne Gewerblich Nutzung am WebsiteSpark Programm teilnehmen können, aber an einer anderer Stelle schreibt MS das innerhalb von einem halben Jahr eine Webapplication mit der zur Verfügung stehenden Technologie erstellt werden muss. Ist das auch für die Privatpersonen verpflichtend?
Oder wie sieht es aus wenn ich mit den Produkten an Open Source Projekten arbeite.
Außerdem interessiert es mich wie es aussieht, wenn ich während den drei Jahren z.B. ein Gewerbe anmelde. Wie sieht dort dann die Nutzungsbedinungen aus?
gibt es eigentlich einen Web-Service ala Google Translat oder dem Microsoft Translator die
1. Kostenfrei sind
2. Wenn möglich keine Beschränkung der Anfragen festsetzen
auf den Android Device muss keine zusätzliche Runtime installiert werden.
Mono for Android benötigt auch die Android SDK und Java um Android Apps zu erstellen, weil am ende Java-Bytecode "ausgespuckt" wird.
@inflames2k
Es wäre interessant zu wissen welchen Router/Switch du momentan verwendest.
Wenn es ein managebarer Switch ist, kann man sich evtl. auch überlegen ob man mit VLans (VLAN) arbeitet.
Oder soll das C# Programm das Passwort an das C++ senden, welches sich an einem 3ten Glied authentifizieren muss ??
Genau das soll passieren.
Zitat von Karill Endusa
Da verweise ich doch nur zu gern auf CodeProject: Using Unmanaged code and assembler in C#
Nach diesem Artikel sollte auch die Verwendung von P/Invoke mit eigenen C++ DLL's kein Problem mehr darstellen, denke ich mal.
Genau nach sowas habe ich gesucht, Danke!
Bin gerade dabei die Verschlüsslung in C++ zu bauen und sie dann in beiden Welten anzusprechen.
das kommt mMn auf den UseCase an. Sprich: Wie sensibel sind die Daten?
Es handelt sich um Passwörter
Zitat
Alternativ kannst du auch in einer Sprache sowohl ver- als auch entschlüsselung implementieren und aus beiden Sprachen heraus nutzen. Sollte für die c++ Variante das .NET Framework tabu sein, dann implementiere die ver- und entschlüsselung in c++ und nutze das in c#
Daran habe ich auch schon gedacht und Probiert, eine C++ Lib in C# anzusprechen. Nur sind leider meine C++ nicht die besten um eine solche Dll zu erstellen.
Außerdem wollen wir nicht, das man aus C++ C# dlls verwendet (wäre sonst zu einfach :) )
Zitat
Es dürfte doch sicher einiges geben wo man sowohl für C# als auch C++ Code findet.
Oder gleich etwas das in .NET schon drin steckt.
Such doch mal ein bisschen danach, da wirst du schneller fündig als wenn du hier erklärst was du so etwa haben willst.
Wie ich schon geschrieben habe, suchte ich schon aber ohne erfolg.
Zitat
Sollte es sich wirklich um Logindaten handeln, würde ich eh nicht zu einer Verschlüsselung sondern zu einem Hash raten, und da dann zu einem Salted... und das sind dann normalerweise wieder Algorithmen, die es in fast jeder Sprache schon gibt :)
Das C++ Programm soll ja die Zugangsdaten verschlüsselt bekommen um sie zu verwenden und sich zu authentifizieren.
ich weiss nicht ob das so klapp.
Der WindowsMediaPlayer kann meines wissen nicht mit den Format von YouTube was anfangen.
Was man Probieren kann ist Folgendes. Ersetze das WindowsMediaPlayer Element durch ein Webbrowser Element und Navigiere, im Webbrowser Element, zu dem selektierten Eintrag.
aus meiner sicht, ist ein Proxy zu installieren und zu konfigurieren kein großer Akt.
Aber du schriebst, dass du keine ahnung davon hast.
Aus meiner Erfahrung kann ich erzählen das sowas nicht schwierig ist. Mein erster Proxy wo ich eingericht habe war ein Squid auf einem Gentoo-Server im Geschäft.
Die meiste arbeit hatte ich beim Aufsetzten von Gentoo, der Proxy war eigentlich schnell installiert und konfiguriert.
Sonst findet man im Netz viele Tutorials zum Thema "Proxyserver auf Linux", die sich damit beschäftigen wie man einen Proxy installiert und Einrichtet.
Auch zu den Grundlagen von Linux (z.B. Benutzung der Shell, Allgemeine Befehle, ...) finden sich zahlreiche Tutorials im Netz.
Und die meisten Hoster bieten dir ein WebInterface an, um den Server zu verwalten.
miete dir doch einen V-Server und Installiere dir dort einen Proxy. Man bekommt heutzutage schon Linux V-Server für monatlich 5-10 € her.
Was man aber dann dabei beachten sollte, ob der Hoster des Servers es erlaubt das auf den Servern ein Proxy betrieben wird. Manche Hoster unsagen dies.
mir stellt sich gerade eine Frage, wie ich mittels einen Unit Test eine AppDomain testen kann ob sie vorhanden ist und ob die Methoden aufgerufen werden können.
Zuerst installiere ich den Service mit ManagedInstallerClass.InstallHelper, der den Konstruktor meiner Klasse aufruft die von System.Configuration.Install.Installer abgeleitet ist und starte dann den Service mit
ServiceController serviceController = new ServiceController("ServiceName", Environment.MachineName);
if (serviceController.Status.Equals(ServiceControllerStatus.Stopped) || serviceController.Status.Equals(ServiceControllerStatus.StopPending))
{
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 0, 30));
}
Ich danke allen die mir bei dem Problem geholfen haben.
ich habe ein Problem beim Starten eines Windows Service.
Und zwar soll es nicht nur ein Windows-Service sein, sondern auch eine Konsolenapplikation die Mittels Startparameter als Service oder als Konsolen Applikation laufen soll.
Wenn die Applikation als Service Startet installiere ich den Service zuerst:
Die Klasse die die Methode InstallService enthält, ist von System.Configuration.Install.Installer abgeleitet und hat das Attribut [RunInstallerAttribute(true)].
Der Service wird auch Installiert und in der Liste der Dienste angezeigt.
Nun habe ich ein Problem beim Starten meines Service.
Wenn ich versuche mein Service mit der einer selbst erstellen Methode versuche zustarten, kommt eine System.ComponentModel.Win32Exception:
Fehler
Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung
Hier der Code:
public void StartService()
{
try
{
_logger.Info("Start Service");
ServiceController serviceController = new ServiceController(ServiceName, Environment.MachineName);
if (serviceController.Status.Equals(ServiceControllerStatus.Stopped) || serviceController.Status.Equals(ServiceControllerStatus.StopPending))
{
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 0, 30));
}
}
catch (System.ServiceProcess.TimeoutException ex)
{
_logger.Error("Operation timed out", ex);
}
catch (UnauthorizedAccessException ex)
{
_logger.Error("You are not authorized to perform this action", ex);
}
catch (InvalidOperationException ex)
{
Win32Exception winEx = ex.InnerException as Win32Exception;
if (winEx != null)
{
switch (winEx.NativeErrorCode)
{
case 5: //ERROR_ACCESS_DENIED
_logger.Error("You are not authorized to perform this action", ex);
break;
case 1722: //RPC_S_SERVER_UNAVAILABLE
_logger.Error("The server is unavailable or does not exist", ex);
break;
case 1060: //ERROR_SERVICE_DOES_NOT_EXIST
_logger.Error("The service does not exist", ex);
break;
case 1056: //ERROR_SERVICE_ALREADY_RUNNING
_logger.Error("The service is already running", ex);
break;
case 1062: //ERROR_SERVICE_NOT_ACTIVE
_logger.Error("The service is not running", ex);
break;
default:
break;
}
}
_logger.Error("InvalidOperationException at Start service", ex);
}
catch (Exception ex)
{
_logger.Error("Error at start Service", ex);
}
}
Was hierbei komisch ist das die OnStart-Methode meiner von der System.ServiceProcess.ServiceBase abgeleiten Klasse nicht aufruft. Ich habe schon mal versucht den ServicesPipeTimeout Eintrag in der Registry zu erhöhen, dies brachte aber keine Verbesserung.
Wenn ich versuche den Service mit
System.ServiceProcess.ServiceBase.Run(program);
zu starten bekomme ich folgende Meldung:
Fehler
Der Dienst kann nicht von der Befehlszeile oder einem Debugger gestartet werden. Ein Windows-Dienst muss zuerst (mit installutil.exe) installiert und anschließend mit dem ServerExplorer, der Windows-Diensteverwaltung oder mit dem Befehl NET START gestartet werden.
Die Variable program die Ausgeführt werden soll ist die Klasse die von System.ServiceProcess.ServiceBase abgeleitet ist.
Ich komme nun nicht mehr weiter, wer hat eine Idee woran das liegen kann.
Wenn ich z.B. 100 Task laufen lassen die alle unterschiedliche Rechner anpinnen, bekomme ich als Ergebnis, dass nur das 15 Rechner erreichbar sind.
Wenn ich aber nur 5 Task laufen lasse erreiche ich 50 Rechner per Ping Befehl.
Nun die frage. Gibt es irgendwo eine Beschränkung von Windows oder von .NET die eine Maximale Anzahl von Pings zulässt.
Mein verdacht ist das bei einer so hoher Anzahl gleichzeitiger Pings, ein Ping den anderen "Nicht zum Zuge kommen lässt".
ich habe mal wieder eine kleine frage, nachdem ich durch suchen nichts gefunden habe.
Ist es in Silverlight möglich ein UserControl im Frame zu verkleinern?
Beispiel:
Ein UserControl hat die Höhe und Breite von 100 und mein Frame hat einen Anzeigebereich von 32x32. Wenn ich das UserControl in meinen Frame stecke sehe ich nur die Linke obere Ecke. Es soll aber so eine art Mini vorschau sein.
ja gfoidl mir ist bewusst das es nur ein Workaround ist, aber es geht erstmal.
Und da es jetzt auch bis morgen mal lauffähig sein muss (Ich bin dann erstmal zwei Wochen im Urlaub), bin ich erstmal zufrieden das es mit dem Workaround geht.
Nach dem Urlaub setzte ich mal hin und mache es richtig (Bin auch nicht gerade der Fan von Workarounds)