vb.net - 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 的新手,所以不知道还有什么要检查的。
我提到了它挂起的结果 - 作业进入这一步并且挂起不会退出我必须终止进程。或者如前所述,错误日志中有一条消息“系统找不到指定的文件”
解决方案
请管理员将 gpg.exe 放入 PATH 环境变量中,您可以避免这些长文件路径。因此,如果您需要扩展到许多系统,它已经是每个系统的一部分,作为先决条件。
推荐阅读
- visual-studio-code - 如何在 VSCode 中为同时运行的两个不同 Python 脚本拆分终端
- json - JSON 到 powershell
- microsoft-cognitive - 由于转录参考,无法删除自定义语音模型
- javascript - 代码按我想要的方式工作,但出现“未捕获的类型错误”
- mongodb - Celery MongoClient 分叉前开启
- python - 一个 HTTP GET 请求返回 302,但位置标头与我最初传递的相同
- image - 9 Flutter 中的补丁替代方案?
- coldfusion - 带有大括号的 ColdFusion 变量 {}
- probability - 如何从 extRemes 输出中提取单个参数
- mysql - 无论如何使用 Percona 的 keyring_vault.so 和 MySQL 社区版