2012-01-25 38 views
1
ConnectionOptions connOptions = new ConnectionOptions(); 
connOptions.Username = _username; 
connOptions.Password = _password; 
connOptions.Impersonation = ImpersonationLevel.Impersonate; 
connOptions.Authentication = AuthenticationLevel.PacketPrivacy; 
connOptions.EnablePrivileges = true; 
ManagementScope manScope = new ManagementScope(_server, connOptions); 
manScope.Connect(); 
ObjectGetOptions objectGetOptions = new ObjectGetOptions(); 
ManagementPath managementPath = new ManagementPath("Win32_ScheduledJob"); 
ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions); 

ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 
inParams["Name"] = "TESTER"; 
inParams["Owner"] = "Tester"; 
inParams["Command"] = command; 
inParams["StartTime"] = "********171000.000000-300"; 

我打算连接到远程系统来创建计划任务。我可以创建计划任务,但是它是使用用户 - SYSTEM创建的。我希望它在我的用户下创建。我试图使用像“所有者”和“名称”如属性:C#WMI Win32_ScheduledJob属性

inParams["Owner"] = ; 
inParams["Name"] = ; 

但他们抛出一个ManagementException“未找到”。有谁知道我能做到这一点,或者说可能是错误的,我在这里做...

感谢

回答

0

创建具有Win32_ScheduledJob WMI类计划作业相当于使用AT命令创建工作。 AT服务通常在Local \ System帐户或NetworkService帐户下运行。所以当你使用这个类时,你的工作是使用这些帐户之一创建的,以获取关于此主题的更多信息,您可以检查备注的一部分MSDN documentation。了解。

+0

了解。谢谢。 是否有使用AT命令为计划任务添加名称?或者,无论如何,我可以使用WMI在远程系统上运行schtasks命令? – Ryez

+0

似乎我可以使用Win32_Process类在远程计算机上运行命令行代码。它可以运行schtasks,并使用/ RU和/ RP设置它的工作。不是最优雅的解决方案,但它必须做的。感谢RRUZ的帮助。 – Ryez