Я передаю в функцию имя пользователя и имя компьютера, а затем запускаю этот код:
Код: Выделить всё
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
//string adminUsername = config["Admin:Username"];
//string adminPassword = config["Admin:Password"];
string adminUsername = config["me:Username"];
string adminPassword = config["me:Password"];
ConnectionOptions opts = new ConnectionOptions
{
Username = adminUsername,
Password = adminPassword,
Impersonation = ImpersonationLevel.Impersonate,
Authentication = AuthenticationLevel.PacketPrivacy
};
ManagementScope scope = new ManagementScope($"\\\\{computerName}\\root\\cimv2", opts);
scope.Connect();
ObjectGetOptions options = new ObjectGetOptions();
ManagementPath path = new ManagementPath("Win32_Process");
ManagementClass processClass = new ManagementClass(scope, path, options);
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
// Check return values
inParams["CommandLine"] = "shutdown /l /f"; // /l = logoff, /f = force
if (scope.IsConnected)
{
// Connection is successful
Console.WriteLine("Connection to remote computer established.");
}
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
if (outParams != null)
{
// Access specific return values
object returnVal = outParams["returnValue"];
Console.WriteLine(returnVal);
}
В параметре returnVal из outParams отображается «0», что означает отсутствие ошибок в выполнение кода.
Чего не хватает для эффективности этого кода?
Подробнее здесь: https://stackoverflow.com/questions/787 ... sharp-core