即使指定了特定帐户,Windows Server 2012计划任务也使用默认configuration文件运行(当运行会话减less时)

正如在http://social.technet.microsoft.com/Forums/windowsserver/en-US/5e6dc56d-9069-42e3-a7e3-87437cf8ed81/scheduled-tasks-run-in-the-default-user-profile(No从微软的答案呢)

我有同样的问题。 我们用于在Windows Server 2008 R2中完美运行的计划任务不在Windows Server 2012中执行。此任务的可执行文件取决于用户环境文件夹。

即使任务具有指定的用户帐户,但在未login到服务器的情况下运行时,它将针对默认configuration文件执行,因此用户环境文件夹不正确,而且可执行文件失败。

有人知道如何解决这个问题?

我去年通过我们的第三方支持公司向微软报告了这个错误。 他们承认这是一个错误,但拒绝修复没有高的业务影响 – 当时我正在开发一些东西。

在我的研究中,我发现如果您有一个交互式会话作为您的计划任务设置为运行的用户运行,则将使用正确的configuration文件。 Microsoftbuild议在计划的任务之前运行calc.exe(或其他某个进程)。 这似乎在我的情况下工作。

我再次遇到了一个新的问题,所以我已经要求我们的支持公司再次向微软提出这个问题,并且引用这个post来表明其他人也遇到了这个问题。

您可以在任务前一两分钟启动另一个交互式任务,这将使Windows有时间加载正确的configuration文件,或通过batch file启动任务。

set "USERPROFILE=%USERPROFILE%\..\%USERNAME%" set "APPDATA=%USERPROFILE%\AppData\Roaming" set "LOCALAPPDATA=%USERPROFILE%\AppData\Local" "%~dp0\YOUREXEHERE.exe" 

将其复制到一个batch file中,并将其放在与要运行的exe相同的目录中。 然后将YOUREXEHERE更改为EXE的名称。 不要更改脚本中的其他内容并保存。

然后运行批处理作为您的计划任务,而不是EXE。 无论用户运行任务,应用程序都将使用他们的configuration文件。

修复程序似乎在这里可用: https : //support.microsoft.com/en-us/kb/3133689

但是,因为我需要安排重新启动服务器来应用此修补程序,所以我使用了上面提供的@ brian-d解决scheme,并且为我工作。