将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径

2024-03-28

我有一个用 VB.net 编写的实用程序,它作为计划任务运行。它在内部调用另一个可执行文件,并且必须访问映射驱动器。显然,Windows 在用户未登录时访问映射驱动器的计划任务存在问题,即使向任务本身提供了身份验证凭据也是如此。好的。

为了解决这个问题,我刚刚将 UNC 路径传递给了我的应用程序。

process.StartInfo.FileName = 'name of executable'
process.StartInfo.WorkingDirectory = '\\unc path\'
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
process.StartInfo.Arguments = 'arguments to executable'
process.Start()

这与我在映射驱动器上使用的实现相同,但是使用 UNC 路径,该进程的行为并不像 UNC 路径是工作目录一样。

将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径是否存在任何已知问题?如果不是,我做错了什么?


当用户未登录时,映射驱动器的问题是它们不存在。驱动器仅被映射并可供当前登录的用户使用。如果没有人登录,则不会映射任何驱动器。

作为解决方法,您可以通过 CMD 运行,调用 PUSHD,它将您的 UNC 映射到幕后的驱动器,然后执行您的代码。我已经从 system32 复制了 tree.com 文件,并将其作为“tree4.com”放在我的文件服务器上,并且此代码按预期工作(我还重定向了标准输出,以便我可以看到调用的结果,但这就是不必要)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Using P As New Process()
        'Launch a standard hidden command window
        P.StartInfo.FileName = "cmd.exe"
        P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        P.StartInfo.CreateNoWindow = True

        'Needed to redirect standard error/output/input
        P.StartInfo.UseShellExecute = False

        P.StartInfo.RedirectStandardInput = True
        P.StartInfo.RedirectStandardOutput = True

        'Add handler for when data is received
        AddHandler P.OutputDataReceived, AddressOf SDR

        'Start the process
        P.Start()

        'Begin async data reading
        P.BeginOutputReadLine()

        '"Map" our drive
        P.StandardInput.WriteLine("pushd \\file-server\File-Server")

        'Call our command, you could pass args here if you wanted
        P.StandardInput.WriteLine("tree2.com  c:\3ea7025b247d0dfb7731a50bf2632f")

        'Once our command is done CMD.EXE will still be sitting around so manually exit
        P.StandardInput.WriteLine("exit")
        P.WaitForExit()
    End Using

    Me.Close()
End Sub
Private Sub SDR(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
    Trace.WriteLine(e.Data)
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径 的相关文章

随机推荐

  • 更改 Exoplayer 中的播放速度

    我正在寻求实现一个具有变速播放 1 0x 1 25x 1 5x 的音频播放器 就像目前市场上典型的有声读物播放器一样 我想使用 Google 的 Exoplayer 库作为我的音频播放器库 但它们似乎不支持变速播放 关于如何实现这个的任何想
  • AVCaptureSession 音频不适用于长视频

    我正在使用 AVCaptureSession 录制带有音频的视频 对于短视频来说一切似乎都正常 但由于某种原因 如果我录制的视频长度超过 12 秒左右 音频就不起作用 Edit 因为这个答案仍然得到点赞 这个答案可以缓解问题 但问题的可能根
  • LoadLibrary 失败:第一次机会异常 0xC0000139(未找到 DLL)- 如何调试?

    我有一个 dll mytest dll 当通过加载时LoadLibrary 返回 NULL 并且 127 作为GetLastError 如果我在 mytest dll 上使用 DependencyWalker 它会报告它应该正确加载并且所有
  • 参数异常应该进行单元测试吗?

    我知道这个问题与之前发布的其他问题非常相似 但我想以适当的方式讨论这个主题 您认为 明显 的异常应该进行单元测试吗 对于明显的异常 我的意思是 例如 由于空参数或空字符串或负数而导致的异常 在我们单元的业务逻辑使我们明显看出这些异常总是会在
  • jQuery 包装集中元素的顺序是否始终与元素在标记中出现的顺序匹配?

    jQuery 包装集中元素的顺序是否保证与元素在标记中出现的顺序相匹配 我问这个问题是因为我需要对一组嵌套元素执行操作 并且我需要始终按照嵌套顺序执行操作 我可以使用以下命令运行该操作吗 each 匹配集上的迭代器并始终获得正确的顺序 或者
  • 有选择地禁用 swaggerUI 中的“尝试一下”

    尽管这里对该主题进行了很长的讨论 https github com swagger api swagger ui issues 156 https github com swagger api swagger ui issues 156 我
  • 等待页面加载

    我正在尝试创建一个等待页面加载的方法javascript 但我有一个错误 可能我没有正确使用该方法 public static void WaitForLoad this IWebDriver driver int timeoutSec 1
  • 为什么 JavaScript 中“0 === -0”为真?

    在最近的一篇文章中http wtfjs com http wtfjs com 一位作者在没有解释的情况下写了以下内容 这恰好是真实的 0 0 returns true 我对 运算符的理解是 如果操作数指向同一个对象 它会返回 true 此外
  • 迭代时从地图(或任何其他 STL 容器)中擦除/删除内容

    据称 当迭代器变得无效时 您不能在迭代时删除 删除容器中的元素 删除满足特定条件的元素的 安全 方法是什么 请只使用 stl 不要使用 boost 或 tr1 EDIT如果我想删除满足特定条件的多个元素 是否有更优雅的方法 也许使用函子和
  • 将带有 html 扩展名的文件重定向到不带扩展名的文件(在 url 中)

    我最近使用 htaccess 更改了我的网站网址 这样我的网址就不会显示文件扩展名 现在我的问题是我创建了一个新的 xml 站点地图 这样我的 url 将是无扩展名的 Google 网站管理员工具告诉我有关重复内容的问题 IE page 和
  • 如何将 IntentService 的结果返回到 Activity 中?

    我正在使用 IntentService 通过 JSON 处理与服务器的网络通信 JSON 服务器部分工作正常 但我无法将结果返回到需要的地方 以下代码显示了我如何从 onClick 内部启动意图服务 然后让该服务更新全局变量以将结果转发回主
  • 使用 powershell 对整个目录进行 MD5 校验和哈希

    我正在尝试使用 powershell 为整个目录生成 MD5 校验和 在 Linux 上 有一个非常有效的 1 liner 如下所示 tar cf 某个目录 md5和 我了解到 tar 现在是 Windows 10 的一部分 并且可以在 P
  • Ruby on Rails 中的 Gemfile 和 Gemfile.lock 有什么区别

    我是 Ruby on Rails 的初学者 我正在使用 Rails 3 0 9 有什么区别Gemfile and Gemfile lock在 Rails 中 The Gemfile是您指定要使用哪些 gem 的地方 并允许您指定哪些版本 T
  • 获取未安装字体的字体和 Windows 名称

    有人可以告诉我如何获得字体的字体名称吗 我如何获取具有字体名称的字体的 Windows 名称 例如 arialblackno1 ttf 其字体为 arialblack 但我希望获取未安装的字体的字体名称 它只是在一个文件夹中 您在评论中说您
  • C#属性和ref参数,为什么没有糖?

    我刚刚在 C 中工作时遇到了此错误消息 属性或索引器不能作为 out 或 ref 参数传递 我知道导致此问题的原因 并快速解决了创建正确类型的局部变量 并将其作为函数调用的问题out ref参数 然后将其分配回属性 RefFn ref ob
  • 为什么嵌套的 HTML 元素会让我的 CSS 跳转?

    这是一个谜题 基本页面 一个元素 http jsfiddle net PZj6t http jsfiddle net PZj6t HTML div div CSS body html height 100 margin 0 padding
  • 使用 COMMAw,d 转换数字

    我正在关注SAS 帮助页面 http support sas com documentation cdl en lrdict 64316 HTML default viewer htm a000200667 htm并试图获得与页面底部示例相
  • 测试 post 请求时 Django 消息中间件问题

    我正在尝试测试一个 UpdateView 它将一条消息添加到重定向的成功页面 看来我的问题来自messages因为 pytest 返回 django contrib messages api MessageFailure 如果不安装 dja
  • 计算文件中的字长

    所以我的函数应该打开一个文件并计算字长并给出输出 例如 许多 样本 txt 字长1 2 长度为 2 的单词 6 长度为 3 的单词 7 长度为 4 的单词 6 我的sample txt 文件包含 这是一个测试文件 1 个字的长度是多少 长度
  • 将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径

    我有一个用 VB net 编写的实用程序 它作为计划任务运行 它在内部调用另一个可执行文件 并且必须访问映射驱动器 显然 Windows 在用户未登录时访问映射驱动器的计划任务存在问题 即使向任务本身提供了身份验证凭据也是如此 好的 为了解