在Process()中对程序文件(86)路径正确引用Visual Basic

时间:2018-08-23 22:32:59

标签: vb.net visual-studio gnupg

我已经尝试了一段时间。我在网上搜索过,但尝试过的解决方案似乎无效。

这可以从我的PC上正常运行:

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管理员告诉我,如果路径中有空格,则必须正确引用它。

我可以从PC的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的新手,所以不确定要检查什么。

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

1 个答案:

答案 0 :(得分:-1)

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