【发布时间】:2018-06-10 20:17:39
【问题描述】:
我在测试开发环境中工作,我正在任务计划程序中创建一个任务,该任务使用远程网络位置来访问可执行文件。虽然在我的场景中,网络地址是我自己的机器。 像这样
\\MyComputerName\FolderOnMyPC\application.exe
现在我已授予对该文件夹的正确共享访问权限,并且可以通过资源管理器访问可执行文件,但是当我在任务计划程序中创建任务时,我无法运行它。虽然任务在这样的本地磁盘路径下运行良好
D:\FolderOnMyPC\application.exe
我已尝试通过 Internet 对此进行调查,但我无法找到任何解决方法或它发生的原因,因为即使在
System32/任务
任务计划程序的参数部分中还指定了一些参数
已编辑
我正在分享执行任务的代码。
public Task<int> Launch(string Path, string iniFilePath)
{
try
{
TaskService taskService = new TaskService();
const string TaskName = "LaunchTask";
if (taskService.FindTask(TaskName) != null)
{
var task = taskService.FindTask(TaskName);
}
iniFilePath = "\"" + iniFilePath + "\"";
string completeArgument = "/portable /skipupdate " + iniFilePath;
TaskDefinition taskDefinition = taskService.NewTask();
taskDefinition.Principal.LogonType = TaskLogonType.S4U;
taskDefinition.Actions.Add(new ExecAction(mt4Path, completeArgument, null));
taskDefinition.Settings.Hidden = false;
Microsoft.Win32.TaskScheduler.Task mtTask = taskService.RootFolder.RegisterTaskDefinition(TaskName, taskDefinition);
RunningTask runningMT4 = mtTask.Run();
int processIdMT = (int)runningMT.EnginePID;
mt4Task.Folder.DeleteTask(mtTask.Name);
return System.Threading.Tasks.Task.FromResult(processIdMT);
}
catch
{
throw;
}
}
关于该项目的一些额外信息是,我正在开发一个 Service Fabric 项目并将其用作服务。
【问题讨论】:
-
任务调度程序在作为系统运行时无法“看到”网络驱动器,但可以在指定的用户帐户下。
-
我不确定你想说什么,因为据我所知,它是一个系统进程,应该能够看到网络。对吗?
-
系统服务帐号看不到网络共享。尝试将其设置为使用具有权限的指定用户帐户运行。系统帐号只能是本地管理员。
-
“系统服务帐户看不到网络共享。”。 - 不对。它应该能够通过 UNC 路径访问共享,如果 the share grants permissions to the machine account,而不是用户。
-
这不是一个编程问题。您甚至似乎都没有通过任何代码配置任务计划程序(更不用说 C#),但即使您这样做了,问题也与编程无关,而只是与任务计划程序的行为方式有关。任务计划程序不是“主要用于编程的工具”,因此有关使用它的问题不是 Stack Overflow 的主题。
标签: c# windows scheduled-tasks azure-service-fabric taskscheduler