После тщательного обновления вашего поста, я полагаю, что вы можете найти одну из двух вещей здесь:
- Как выполнять различные команды на основе пользовательского ввода?
- Как изменить пароль пользователя на сервере.
Я дам общий обзор каждого из них в надежде, что вы можете стать более образованным, и, надеюсь, обновлю ваш пост, чтобы отразить ваш действительно желаемый результат.
Удивительный переключатель
Чтобы выполнить несколько команд в вашем консольном приложении, посмотрите на структуру переключателя , доступную в C #. Это позволит вам выполнять разные биты кода на основе определенных критериев, таких как пользовательский ввод. Например:
using System;
using static System.Console;
private static bool exit = false;
private static string serverName = string.Empty;
static void Main(string[] args) {
WriteLine("Please enter a command.");
string response = ReadLine();
switch (response) {
case "setserver": SetServer(); break;
case "changepass": ChangePassword(); break;
}
}
ReadKey();
}
static void SetServer() {
WriteLine("Please enter a server name.");
serverName = ReadLine(); // You should probably validate the user input here.
}
static void ChangePassword() {
// Execute your needed password change code here.
}
Это поможет вам выполнить несколько команд в консольном приложении.
Изменение пароля (Active Directory)
Для изменений в Active Directory вы должны взглянуть на этот пост и эту документацию для получения дополнительной информации. Код, который он использует (в случае, если ссылка когда-либо умирает по какой-либо причине):
// Connect to Active Directory and get the DirectoryEntry object.
// Note, ADPath is an Active Directory path pointing to a user. You would have created this
// path by calling a GetUser() function, which searches AD for the specified user
// and returns its DirectoryEntry object or path. See http://www.primaryobjects.com/CMS/Article61.aspx
DirectoryEntry oDE;
oDE = new DirectoryEntry(ADPath, ADUser, ADPassword, AuthenticationTypes.Secure);
try {
// Change the password.
oDE.Invoke("ChangePassword", new object[]{strOldPassword, strNewPassword});
}
catch (Exception e) {
Debug.WriteLine($"Error changing password. Reason: {e.Message}");
}
Изменение пароля (SQL Server)
Для изменений в SQL Server я бы порекомендовал вам посмотреть этот пост (где есть два достойных ответа на решение этой проблемы) и эту документацию об изменении пароля на SqlConnection
уровень объекта.
SqlConnection.ChangePassword(string, string);
Изменяет пароль SQL Server для пользователя, указанного в строке подключения, на предоставленный новый пароль.
Ответы, предоставленные на другой пост, будут объединять этот код:
string sqlquery = "SELECT Password FROM [Member] where Username=@username";
SqlCommand cmd = new SqlCommand(sqlquery, connect);
cmd.Parameters.AddWithValue("@username", label_username.Text);
cmd.Connection = connect;
string currentPassword = (string)cmd.ExecuteScalar();
if (currentPassword == textBox_Current.Text) {
// PASSWORD IS CORRECT, CHANGE IT, NOW.
} else {
// WOW EASY BUDDY, NOT SO FAST
}
С этим советом:
- рассмотрите вашу строку username -> Hash it -> напишите запрос, чтобы проверить, совпадает ли это хеш-значение и хеш-значение пароля пользователя, хранящееся в базе данных
- рассмотреть строку пароля и строку newPassword -> проверить, является ли каждый из них нулевым или длина равна 0
- учитывать строковый пароль и строку newPassword в вашем коде -> Hash both -> проверить, совпадают ли значения хеша
Важное примечание
Независимо от того, какую проблему вы пытаетесь решить, при работе с паролями вы должны тщательно продумывать хеширование и шифрование, которые сопровождают пароли. Если вы собираетесь изменить пароль на сервере, вы должны также проверить старый пароль перед внесением изменений. Вам также следует проверить новый пароль, проверив наличие недопустимых символов, убедившись, что надежность пароля достаточна, проверив, что начальная запись нового пароля совпадает с записью подтверждения, в числе нескольких других вещей, таких как хеширование и шифрование, которые могут окружать пароль. вам нужно проверить против.
Тщательная проводка
Если вам нужен более подробный ответ на более конкретную проблему, такую как фактическое изменение пароля на сервере, к которому у вас есть разрешения, обновите свой вопрос и будьте более внимательны, следуя советам mjwills и посещая Minimal, Полный и проверяемый пример . Это позволит другим читателям не только помочь вам лучше, но и поможет будущим читателям с аналогичными проблемами. Как только вы обновите свой вопрос, чтобы отразить действительно желаемый результат, я обновлю свой ответ (если у меня есть ответ), чтобы продемонстрировать знания, которые вы ищете.