Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Process.Start和shortPath在一台计算机上运行,而在另一台计算机上不运行_C#_File Io - Fatal编程技术网

C# 使用Process.Start和shortPath在一台计算机上运行,而在另一台计算机上不运行

C# 使用Process.Start和shortPath在一台计算机上运行,而在另一台计算机上不运行,c#,file-io,C#,File Io,我正在做一个小软件,从数据库中读取要打开的应用程序的名称,并自动打开它们 我在一台计算机上开发了它,创建了安装程序,并在几台计算机上安装了它。都有Windows 7和service pack 1。在所有的计算机上,它都在工作,只有一台除外 在此计算机上,我收到以下错误: 找不到“C:\Users\Pulse\MYDOCU~1\jdkjdjskjs.xlsx”。检查 检查文件名的拼写,并验证文件位置是否正确 对 如果您试图从最近使用的列表中打开文件 文件,请确保该文件未被重命名、移动或删除 路径创

我正在做一个小软件,从数据库中读取要打开的应用程序的名称,并自动打开它们

我在一台计算机上开发了它,创建了安装程序,并在几台计算机上安装了它。都有Windows 7和service pack 1。在所有的计算机上,它都在工作,只有一台除外

在此计算机上,我收到以下错误:

找不到“C:\Users\Pulse\MYDOCU~1\jdkjdjskjs.xlsx”。检查 检查文件名的拼写,并验证文件位置是否正确 对

如果您试图从最近使用的列表中打开文件 文件,请确保该文件未被重命名、移动或删除

路径创建正确,错误仅出现在文件名中。它为每次执行创建的字符不同(尽管文件名相同)

以下是我使用的代码:

StringBuilder shortPath = new StringBuilder(255);
GetShortPathName(fileName, shortPath, shortPath.Capacity);
Process.Start(commandLine, shortPath.ToString());
我从数据库中读取的文件名和命令行数据。
这里需要更正什么?

您提供的代码没有多大帮助,您需要为我们提供
GetShortPathName
的代码,以及“路径创建正确,错误仅出现在文件名中。它创建的字符对于每次运行都是不同的(尽管文件名相同)。”这是否意味着长名称每次都相同,但短名称不同?另外,文本是否真的是“jdkjdjskjs”,或者您是否替换了文件名,请给我们真实的名称,因为它会影响对它可能是什么的决定。为什么您需要使用短路径?@ScottChamberlain:是WinAPI。不过,你其余的评论都很到位。:-)有没有可能在那台机器上产生了短名称?@Damien_The_unsiver我可以看出两个原因,1。在作为参数传递给下一个程序2的路径中,不需要处理转义空格。(在这种情况下不适用)如果需要进行某种路径连接,则会减少在windows中超过最大文件路径长度的机会。另外,请将P/Invoke语句包含在
GetShortPathName
中,以便我们检查是否有错误。最后,您能否在该文件的文件夹中执行一个
dir/X
,并向我们显示该文件的长名称和短名称的输出?