问题出在具有最新更新的 Windows 7 系统上,位于非 AD 非域环境中具有 Windows 2008r2 服务器的网络上。
从文件资源管理器或应用程序内,我可以使用已保存的凭据访问 \\server\share。根据服务器上用户帐户的权限,我拥有读/写访问权限。从命令窗口,我可以输入“net use \\server\share”,然后会得到一些详细信息,然后是“命令已成功完成”。
从计划任务启动的 CMD 批处理文件中,net use \\server\share 有时会挂起脚本,因为它提示输入用户名和密码。
我可以看到失败的计划任务窗口因提示而冻结。我可以启动另一个命令窗口并输入“net use \\server\share”,然后它就可以正常工作了。
如果我从任务计划程序重新运行计划任务,它将成功运行,并且不会挂在 Net Use 上。只有当系统启动任务时,它似乎才会出现登录问题。
为什么 net use 有时会要求输入凭据(保存在本地计算机上)?如何才能使此计划任务可靠地运行?
答案1
问题似乎是在最近的一些 Windows 更新之后,提升的计划任务不再能够可靠地使用存储的凭据进行网络访问,即使它们以主用户身份而不是系统身份运行。
我不想为了解决这个问题而在机器上全局禁用 UAC。我不想将用户名和密码放在任务的 CMD 文件中。
我的折衷解决方案是在服务器上为此任务创建一个具有特定、有限权限的新帐户。我在服务器上为此任务所需的特定资源创建了一个新共享。(specialshare)在计划任务中,我删除任何现有登录名(因为它们有时似乎存在),然后使用有限的帐户凭据(在 CMD 文件中)连接到服务器。
NET USE \\server /D
NET USE \\server /U:limiteduser junkpassword
... run the rest of the scheduled task, perform network access to \\server\specialshare...
NET USE \\server /D
虽然不是很理想,但似乎有效。如果您有更好的方法,请发表评论。