gpt4 book ai didi

c# - 将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径

转载 作者:行者123 更新时间:2023-11-30 14:04:11 25 4
gpt4 key购买 nike

我有一个用 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

关于c# - 将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2586719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com