首页 > 解决方案 > Process() 中程序文件 (86) 路径的正确 Visual Basic 引用

问题描述

我一直试图弄清楚这一点。我在网上搜索过,我尝试过的解决方案似乎不起作用。

这在我的电脑上运行正常:

Dim sourceName As String = File_To_Encrypt
Dim gpgsourceName As String = File_To_Encrypt & ".gpg"
Dim argumentString As String = " --batch --yes --recipient recname --encrypt " & sourceName
Dim gpgcmd As String = "\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe"
Process.Start(gpgcmd, argumentString)

当我尝试在生产中运行时,它不起作用。我是 VB 的新手,我尝试过任意数量的组合:

"""\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe"""""
ControlChars.Quote & "\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe" & ControlChars.Quote

即使是我从搜索中看到的:“c:\sp` ace\test.ps1”<< 也没有用

"\\serv2014\c$\Program` Files` (x86)\GnuPG\bin\gpg.exe"

我读到这个: 注意:在 VB.NET 中,“”的转义字符是“”。用三个引号它似乎只是挂起进程:

 """\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe"""

也试过这个:错误信息是系统找不到指定的文件

"\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe"""

感谢任何建议。

我可以在我的 PC 上正常运行它,Windows 管理员告诉我如果路径中有空格,那么我必须正确引用它。

我可以从我的电脑的 cmd 行执行命令 - 没问题。

我可以从 Visual Studio 的按钮运行 vb 程序 - 运行正常。我可以从我的 PC 上的 cmd 行运行这样的命令:

C:\WINDOWS\system32>"\\serv2014\c$\Program Files (x86)\GnuPG\bin\gpg.exe" --batch --yes --recipient recpname --encrypt \\serv2014\e$\Extracts\filename.csv

当我构建 .exe 时,将其放在服务器上并从调度程序运行它 - 它不起作用。我问 Windows 管理员这是否是权限问题 - 他说不。我是这个 Windows VB 的新手,所以不知道还有什么要检查的。

我提到了它挂起的结果 - 作业进入这一步并且挂起不会退出我必须终止进程。或者如前所述,错误日志中有一条消息“系统找不到指定的文件”

标签: vb.netvisual-studiognupg

解决方案


请管理员将 gpg.exe 放入 PATH 环境变量中,您可以避免这些长文件路径。因此,如果您需要扩展到许多系统,它已经是每个系统的一部分,作为先决条件。


推荐阅读