假设一些Windows服务使用的代码需要映射网络驱动器,而不需要UNC路径。当服务启动时,如何使驱动器映射可用于服务的会话?作为服务用户登录并创建持久映射将不会在实际服务的上下文中建立映射。
当前回答
而不是依赖于一个持久驱动器,你可以设置脚本映射/取消映射驱动器每次你使用它:
net use Q: \\share.domain.com\share
forfiles /p Q:\myfolder /s /m *.txt /d -0 /c "cmd /c del @path"
net use Q: /delete
这对我很有用。
其他回答
你可以使用'net use'命令:
var p = System.Diagnostics.Process.Start("net.exe", "use K: \\\\Server\\path");
var isCompleted = p.WaitForExit(5000);
如果这在服务中不起作用,请尝试Winapi和PInvoke WNetAddConnection2
编辑:显然我误解你了——你不能改变服务的源代码,对吗?在这种情况下,我会遵循mdb的建议,但稍微改变一下:创建自己的服务(让我们称之为映射服务)来映射驱动器,并将这个映射服务添加到第一个(实际工作的)服务的依赖项中。这样,在映射服务启动(并映射驱动器)之前,工作服务将不会启动。
我发现了一个解决方案,它与使用psexec的解决方案类似,但不需要额外的工具就可以工作,并且可以在重新启动后继续工作。
只需添加一个计划任务,在“作为运行”字段中插入“system”,并使用简单的命令将任务指向一个批处理文件
net use z: \servername\sharedfolder /persistent:yes
然后选择“在系统启动时运行”(或类似的,我没有英文版本),你就完成了。
这里有一个很好的答案: https://superuser.com/a/651015/299678
例如,你可以使用符号链接。
mklink /D C:\myLink \\127.0.0.1\c$
我还不能评论(在声誉方面),但创建了一个帐户,只是为了回答@Tech Jerk @spankmaster79(好名字lol)和@NMC问题,他们在回复“我发现了一个解决方案,与psexec类似,但不需要额外的工具,并在重启后幸存。”
解决方案是在登录帐户中浏览到该文件夹,即:
\\servername\share
并让它提示登录,并输入您在psexec中用于UNC的相同凭据。之后就开始工作了。在我的例子中,我认为这是因为提供服务的服务器与我要映射到的服务器不属于同一个域。我在想,如果UNC和计划任务都是指IP而不是主机名
\\123.456.789.012\share
它可能会完全避免这个问题。
如果我曾经得到足够的代表点在这里,我会把这作为一个回复。
使用此信息的风险自负。(我已经在XP和Server 2008 x64 R2上进行了测试)
对于这个hack,你将需要SysinternalsSuite由Mark Russinovich:
第一步: 打开提升的cmd.exe提示符(以管理员身份运行)
第二步: 使用PSExec.exe再次提升到根目录: 导航到包含SysinternalsSuite的文件夹并执行以下命令 Psexec -i -s cmd.exe 您现在处于nt authority\系统的提示符中,您可以通过键入whoami来证明这一点。需要使用-i是因为驱动器映射需要与用户交互
第三步: 使用以下命令将持久映射驱动器创建为SYSTEM帐户 Net使用z: \\servername\sharedfolder /persistent:yes
就是这么简单!
警告:您只能从SYSTEM帐户中删除与创建映射相同的映射。如果您需要删除它,请按照步骤1和步骤2执行,但将步骤3中的命令更改为net use z: /delete。
注意:新创建的映射驱动器现在会出现在这个系统的所有用户面前,但他们会看到它显示为“断开连接的网络驱动器(Z:)”。别被名字骗了。它可能声称是断开连接的,但它对每个人都适用。这就是为什么你可以告诉这个黑客是不支持的M$。
推荐文章
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 最好的轻量级web服务器(只有静态内容)的Windows
- npm犯错!错误:EPERM:操作不允许,重命名
- 崇高的文本从命令行
- 如何将MongoDB作为Windows服务运行?
- 如何保持Python脚本输出窗口打开?
- 使用.bat文件检查文件夹是否存在
- 如何查看Windows库(*.lib)的内容
- 在Windows中删除大文件夹最快的方法是什么?
- NPM卡住给出相同的错误EISDIR:对目录的非法操作,读取错误(本机)
- Windows 10环境变量太大
- 如何使用Windows命令行更改目录
- .msi和setup.exe文件之间的具体区别是什么?
- 如何在NERDTree中显示隐藏文件(以句点开始)?