这篇文章是一篇短篇小说,所以请耐心阅读……
我想找到一种有效的方法来管理一组指向网络位置(例如\\server-name\folder
)的快捷方式,这些快捷方式在技术上不仅仅是通用的快捷方式(即 *.lnk 文件),如果需要,它们会要求我提供凭据。我想出了一个可行的解决方案,但想通过这个社区来运行我的想法(和“解决方案”),看看是否有更好的方法。
首先,创建一个通用的快捷方式(*.lnk 文件)到网络位置效果很好,我寻找替代方案的唯一原因是与 StandaloneStacks 应用程序(在 Windows 上模拟 OSX 快捷方式堆栈)一起使用。使用文件夹快捷方式时,它会尝试深入查看文件夹结构,而我希望它只显示 Explorer 中的根文件夹。
无论如何,还有一些要求:我不被允许加入域。我只能根据需要对每台机器进行身份验证,从而探索网络。此外,我的网络密码每个月都会过期,所以我不想让 Windows 永久记住我的凭据,否则我就会被锁定(三次警告就出局了)。
我的第一个想法是简单地使用explorer.exe
它在资源管理器窗口中启动网络位置,如下所示:
explorer.exe /e,/root,"\\server-name\folder"
这很有效,但只有当我已通过服务器身份验证并且 Windows 记住我的凭据时才有效。如果我尚未通过身份验证,运行该命令将带我进入我的主目录(例如C:\Users\Me\
)。
我想过runas
用我的网络帐户来包装它:
runas.exe /netonly /user:domain\user "explorer.exe /separate,/e,/root,\\server-name\folder"
忽略每次启动快捷方式时都必须输入密码的事实,这让我更接近成功,但 Windows 并没有按照我预期的方式传递凭证;它总是显示身份验证失败的消息(“未知用户名或密码错误”)。由于我的密码很快就会过期,我宁愿不输入密码。
经过进一步挖掘,我发现了内置start
命令。我只需将以下内容放入批处理文件中,它就会执行我想要的操作:
start /max "Folder Title" \\server-name\folder
这将在最大化的窗口中启动资源管理器,将我带到文件夹,如果这是我第一次在 Windows 会话期间登录,则会要求输入凭据。最烦人的部分是在启动文件夹之前命令提示符会闪烁。我尝试将命令窗口设置为最小化运行,但它也会最小化输入凭据的提示。
到目前为止,我的解决方案是,我有一个文件夹,里面装满了小批处理文件,其中的启动命令指向我经常访问的网络上的所有位置。然后,我创建了这些批处理文件的快捷方式,并带有更漂亮的图标,以便与 StandaloneStacks 一起使用。
那么,除了编写自己的小实用程序来启动网络位置的快捷方式之外,Windows 中还有其他内置功能可以工作,并且可能比我选择的更简单吗?我使用的是 64 位 Windows 7。
其他注意事项:我会在不同的客户端之间来回切换,因此无法以任何方式永久配置我的机器。这排除了为我想要的文件夹创建网络位置,然后创建魔术快捷方式(使用它们的 GUID)的可能性。它还排除了在 Explorer 中向这些位置添加书签的可能性(堆栈功能很好,这样我就不必启动 Explorer 然后选择快捷方式,但这并不是一个坏主意)。
答案1
因此您可以做的是运行类似于下面的批处理文件:
@echo off
net use z: \\server\folder1 /user:jonsmith * /persistent:no
net use y: \\server\folder2 /persistent:no
net use x: \\server2\folder3 /user:jsmith * /persistent:no
这将在您首次连接时要求输入密码。由于您无法使用多个用户名连接到同一台服务器,因此,一旦您在服务器上首次进行身份验证,它将使用该用户名和密码进行其余连接,直到您断开所有驱动器或注销