当有空格时,某些内容会更改Windows中的文件名(Windows Shell参数)

时间:2018-04-22 00:55:42

标签: c# parameter-passing windows-shell

我正在开发一个基于C#WPF的应用程序。

此应用程序使用系统寄存器捕获资源管理器上下文菜单操作。换句话说:Explorer Context Menu提供了一个为我的应用程序定制的附加项目,有点像NotePad ++(见图1)。

我单击文件上的右键,我的应用程序正确启动。当然,文件名从命令行作为参数%1传递给应用程序。图2显示了我如何为上下文菜单配置寄存器。

问题是,如果文件名不包含空格,一切都很好。如果它包含空格,我会以大写字母找到文件名并截断。

案例1确定

文件名:dummy.txt

在%1中捕获的字符串:dummy.txt

案例2 KO

文件名:paths - Copia.txt

在%1中捕获的字符串:PACE0~1.TXT

在以下两个例子中,第一个正确且正常,第二个是我遇到问题的情景。

  

图片1

enter image description here

  

图片2

enter image description here

有没有人知道避免这种情况的方法?

脚注

不幸的是,我对Windows系统知之甚少,这让我感到很头疼。我不知道问题的原因是什么。

请记住,我可能错放了这个问题:我自己怀疑我是否提供了解决问题所需的信息。

1 个答案:

答案 0 :(得分:1)

尝试将注册表项更改为"C:\Program Files (x86)\Polito\Kyactus\Kyactus.exe" "%1" - 将程序路径和引号中的%1括起来,但每次使用不同的一对。