2016-06-28 109 views
0

我搜索了全部,还没有找到答案。在RunOnce批处理文件中映射驱动器

我有一个脚本来为新的或重新映像的计算机设置用户帐户和Windows自定义设置。我通过RUNONCE注册表项映射驱动器,并且遇到问题。这个本地网络是一个工作组,而不是一个域,所有PC运行Win7Pro或Win10Pro。办公室经理的PC是本地文件服务器,我试图从其他计算机映射驱动器到它。

下面是我在遇到一个问题RUNONCE批处理文件的一部分:

:PROMPTFORPMHOSTNAME 
ECHO This PC was identified during InitialSetup as a Leasing Office PC. 
ECHO This PC's Host Name is %computername%. 
ECHO. 
SET /P PMHOSTNAME="Enter the Property Manager PC Hostname: " 

:MAPDRIVE 
ECHO - Map M Drive 
NET USE M: /delete >nul 2>&1 
NET USE M: \\%PMHOSTNAME%\Data >nul 2>&1 
NET USE M: \\%PMHOSTNAME%\Data /user:%computername%\[username] [password] /persistent:yes 
NET USE /persistent:yes >nul 2>&1 
TIMEOUT /T 5 /NOBREAK >nul 2>&1 

我的方案,最初的脚本使用本地管理员帐户创建通过NET USER用户帐户,然后将RUNONCE放入注册表中。重新启动后,我输入新创建的帐户,RUNONCE按计划运行。

问题是RUNONCE以管理员身份运行。所以当它映射驱动器时,它在管理员级而不是用户级执行。它表示该驱动器已成功映射,但不显示。

我可以通过在两个实例中运行CMD来复制这个事件,一次是admin,一次是用户。当我将驱动器映射为管理员时,它表示它已成功并且不会显示在资源管理器中。当我以用户的身份映射驱动器时,它成功并显示它应该。

所以我需要知道如何让RUNONCE以登录用户身份运行,以便正确映射。或者说明我在做什么错了,我错过了什么应该是显而易见的,只是没有给我目前的挫折感。 :P

非常感谢大家!我非常感谢你的帮助。 :)

+0

如果你运行它没有重定向到NUL的任何errormessages,你会注意到一个错误消息,该驱动器号已经在使用中。你'净使用M:'两次! – Stephan

+0

这是我的错。我正在修改Notepad +中的脚本。在我复制/粘贴到这里后,我忘了删除顶部的NET USE行。我的错。 :P – MaxKorban

回答

0

永久网络驱动器映射始终由Windows每个用户帐户注册,并且网络驱动器仅在用户登录时才连接,并在用户注销时自动断开连接。

有作为微软MSDN文章Run and RunOnce Registry Keys被描述的两个的RunOnce注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 

在64位的Windows,甚至有两个的RunOnce键如上对于64位应用程序以下是不为这个重要任务的32位应用程序:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce 
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce 

它是使用没有好主意或HKCU管理员帐户使用管理员帐户注册要执行一次的批处理文件,以便将该共享永久映射到驱动器号M

更好地将登记

HKEY_USERS\.DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

下的批处理文件和批处理文件使用reg delete

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

删除本身,而是这只有当用户帐户上的持久驱动器在默认用户帐户注册表配置单元中注册批处理文件时,应该完成一次映射。

我会也可以在所有不使用的RunOnce和值启动创建,而不是在目录的快捷方式(* .LNK)文件从注册表与reg query阅读下的注册表项

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 

正在执行的批处理文件删除当前用户帐户的启动目录中的快捷方式文件,即从reg query从值从注册表中读取的目录中的快捷方式文件在注册表项

下启动
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 

这种方法也只能在其上执行批处理文件不存在,或许甚至比通过运行批处理文件的RunOnce作为快捷方式文件可以包含像窗口的高度和宽度属性更好的用户帐户工作适合这项任务。

顺便说一句:行

NET USE M: \\%PMHOSTNAME%\Data /user:%computername%\[username] [password] /persistent:yes 

就足以创建驱动器映射,并将其保存在注册表中持续为当前用户帐户。在最坏的情况下,上面的线和这条线下面的线会适得其反。并删除使用:

NET USE M: /delete /yes 2>nul 
相关问题