gpt4 book ai didi

C# WMI 权限

转载 作者:行者123 更新时间:2023-11-30 17:17:23 26 4
gpt4 key购买 nike

我搜索了很多关于如何将 VBS 转换为 C# 的问题以及所有这些好东西。

我遇到的问题是,当进程在远程机器上执行时,VBS 代码(见下文)使用 SYSTEM 帐户运行。
当我使用 C# 执行时,它会使用我的凭据(或任何运行 C# 程序的人)运行。
VBS 似乎更可靠地进行远程安装,这正是我所需要的。

我想切换到 C#,这样我就可以为程序制作一个更加用户友好的 GUI。
任何人都知道如何让 C# 使用 SYSTEM 帐户运行 WMI?

VBS代码:

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objScheduledJob = objWMIService.Get("Win32_ScheduledJob")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")

'add the scheduled job to be run
objSWbemDateTime.SetVarDate(DateAdd(INTERVAL, MINUTES, Now()))
errReturn = objScheduledJob.Create(strCommand, objSWbemDateTime.Value, False, 0, 0, True, intJobID)

C#代码:

static public int RemoteAdmin(string remoteMachine, string runFile)
{
try
{
ManagementPath run = new ManagementPath(@"\\" + remoteMachine + @"\root\cimv2:Win32_process");
ManagementClass man = new ManagementClass(run);

man.InvokeMethod("Create", new Object[] { runFile });
return 0;
}
catch
{
MessageBox.Show("Error in remote execution");
return 1;
}
}

最佳答案

您需要设置 ConnectionOptions

ConnectionOptions wmiConnOpts = new ConnectionOptions();
wmiConnOpts.Impersonation = ImpersonationLevel.Impersonate;
wmiConnOpts.Authentication = System.Management.AuthenticationLevel.Default;
wmiConnOpts.EnablePrivileges = true;

ManagementScope wmiLoc =
new ManagementScope(String.Format(@"\\{0}\root\cimv2", remoteMachine ),
wmiConnOpts);
ManagementPath wmiProcPath = new ManagementPath("Win32_ScheduledJob");
ManagementClass wmiProc = new ManagementClass(wmiLoc, wmiProcPath, null);
wmiProc.InvokeMethod("Create", new Object[] { runFile });

关于C# WMI 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com