Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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# 为什么我会得到;Win32Exception";?_C#_System.diagnostics_Win32exception - Fatal编程技术网

C# 为什么我会得到;Win32Exception";?

C# 为什么我会得到;Win32Exception";?,c#,system.diagnostics,win32exception,C#,System.diagnostics,Win32exception,我想为我的jar程序做一个“启动器”,基本上我的exe文件本身不做任何事情,只是为了启动我的jar程序 我的jar程序可以打开一个文件,据我所知(注意这一点,因为这可能是问题所在),操作系统通过向包含文件路径的程序传递命令行参数来打开一个文件,对吗 如果我在VisualStudio中使用play按钮执行程序,它工作正常,我将参数放在Properties->Debug->Command line arguments中,它启动我的jar并打开我的文件 如果我从CMD执行我的程序,并通过CMD传递参数

我想为我的jar程序做一个“启动器”,基本上我的exe文件本身不做任何事情,只是为了启动我的jar程序

我的jar程序可以打开一个文件,据我所知(注意这一点,因为这可能是问题所在),操作系统通过向包含文件路径的程序传递命令行参数来打开一个文件,对吗

如果我在VisualStudio中使用play按钮执行程序,它工作正常,我将参数放在Properties->Debug->Command line arguments中,它启动我的jar并打开我的文件

如果我从CMD执行我的程序,并通过CMD传递参数,它工作正常,并再次打开mi文件

但是如果我右键点击我想打开的文件,然后“打开”。。。我得到System.ComponentModel.Win32Exception

我想,也许该程序需要安装,所以我创建了一个innoSetup安装程序,但如果我右键单击->用打开。。。我得到了Win32Exception

我做错了什么


我的代码:

 class Program
        {
            static void Main(string[] args)
            {
                var programa = new System.Diagnostics.Process();
                programa.StartInfo.UseShellExecute = true;
                programa.StartInfo.FileName = "Personas.jar";
                String archivo ;
                try
                {
                    archivo = args[0];
                }catch(System.IndexOutOfRangeException e)
                {
                    archivo = null;
                }
                if(archivo != null)
                {
                    programa.StartInfo.Arguments = archivo;
                }
                try
                {
                    programa.Start();
                }catch(Exception err)
                {

                }
            }
        }
我不会把Java代码放进去,因为问题显然在C语言中#


使用Visual Studio启动应用程序时,当前目录设置为正在启动的可执行文件的目录。我假定personas.jar文件与可执行文件位于同一目录中,因此当您使用ShellExecute=true打开jar文件时,它会发现该文件查找关联并成功运行

当使用CMD时,您可能是从可执行目录中启动它,因此当前目录设置为如上所述,并且再次按计划运行

但是当您使用open With打开文件时。。。当前目录设置为包含右键单击的文件的目录。这意味着,当您尝试使用ShellExecute打开personas.jar时,它会在单击的文件目录中查找,但找不到它。所以失败

您需要获取执行程序集的路径,并使用该路径设置当前目录或完全限定personas.jar的路径


此外,在通过关联打开文件时使用StartInfo对象的Arguments属性也不是一种有文档记录的用法。因此,虽然它现在可以工作,但在任何时候都可能停止工作。

当您使用Visual Studio启动应用程序时,当前目录设置为正在启动的可执行文件的目录。我假定personas.jar文件与可执行文件位于同一目录中,因此当您使用ShellExecute=true打开jar文件时,它会发现该文件查找关联并成功运行

当使用CMD时,您可能是从可执行目录中启动它,因此当前目录设置为如上所述,并且再次按计划运行

但是当您使用open With打开文件时。。。当前目录设置为包含右键单击的文件的目录。这意味着,当您尝试使用ShellExecute打开personas.jar时,它会在单击的文件目录中查找,但找不到它。所以失败

您需要获取执行程序集的路径,并使用该路径设置当前目录或完全限定personas.jar的路径


此外,在通过关联打开文件时使用StartInfo对象的Arguments属性也不是一种有文档记录的用法。所以,虽然它现在可以工作,但在任何时候都可能停止工作。

这只是因为jar是普通的归档文件,而不是PE可执行文件。您将不得不使用java-jar nameOfJar.jar启动它,尽管我既不了解西班牙语也不了解C#,但我相信这是原因。您右键单击什么?在“打开方式”之后的对话框中,您选择了什么?提示:检查工作状态directory@glee8e:只要JAR文件与Javaw.exe相关联,它就可以工作。也可以尝试:运行
cmd
,转到
c:\
,然后以完整路径运行程序。这很可能不起作用,因为jar是普通的归档文件,而不是PE可执行文件。您将不得不使用java-jar nameOfJar.jar启动它,尽管我既不了解西班牙语也不了解C#,但我相信这是原因。您右键单击什么?在“打开方式”之后的对话框中,您选择了什么?提示:检查工作状态directory@glee8e:只要JAR文件与Javaw.exe相关联,它就可以工作。也可以尝试:运行
cmd
,转到
c:\
,然后以完整路径运行程序。你说的有道理,但我也试着把我的文件复制到我应用程序的同一个目录中,所以我的jar和我想打开的文件的当前目录都是相同的,它也不起作用。无论如何,我将尝试我的jar文件的完整路径,我会让你知道它是否有效。谢谢你说的有道理,但是我也试着把我的文件复制到我的应用程序的同一个目录中,所以当前的目录对于我的jar和我想要打开的文件都是一样的,它也不起作用。无论如何,我将尝试我的jar文件的完整路径,我会让你知道它是否有效。谢谢