Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# c中的启动脚本#_C#_C# 4.0_Batch File - Fatal编程技术网

C# c中的启动脚本#

C# c中的启动脚本#,c#,c#-4.0,batch-file,C#,C# 4.0,Batch File,我的应用程序需要在windows启动时启动。因此,我编写了一个批处理文件来运行应用程序 这是将批处理文件路径项写入注册表的代码 private void RegisterInStartup(bool isChecked) { RegistryKey registryKey = Registry.CurrentUser.OpenSubKey ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

我的应用程序需要在windows启动时启动。因此,我编写了一个批处理文件来运行应用程序

这是将批处理文件路径项写入注册表的代码

private void RegisterInStartup(bool isChecked)
{
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
    if (isChecked)
    {
        registryKey.SetValue("ApplicationName", Application.StartupPath+"\\autorun.bat");
    }
    else
    {
        registryKey.DeleteValue("ApplicationName");
    }
}
这是我的批处理文件代码

start File.exe
exit
重新启动系统时,批处理文件正在执行,但应用程序文件.exe未执行

为什么会这样

  • 手动测试批处理文件。点击它。应用程序启动了吗
  • 在注册表中手动输入路径。注册表项有效吗
  • 将注册表项导出到文件。删除注册表并将其与程序一起再次添加,然后将其导出并比较这两个文件。如果1和2在哪里工作,则注册表项中必须存在差异,通过这种方式,您将发现差异

  • 批处理文件不是从其所在的目录启动的。因此,将找不到File.exe。将批处理替换为exe,或提供exe的完整路径。

    “有人能告诉我为什么会发生这种情况吗?”我们可以猜测,但执行了哪些诊断(如过程监视器跟踪)?我怀疑路径问题,但需要这些诊断来确认.PS。为什么不直接从
    Run
    键调用应用程序(
    file.exe
    )?PPS。该注册表项与登录的用户有关,而不是与系统启动有关。是的,我知道该注册表项是针对当前用户的,我也尝试将路径直接设置为(file.exe),但我遇到了很多错误,如
    有关调用即时(JIT)调试而不是此对话框的详细信息,请参阅此消息的结尾。********************异常文本***************System.Data.SQLite.SQLiteException:SQLite错误没有这样的表:t01_schedule
    实际上,当我手动运行file.exe时,表就在那里,它工作得很好异常意味着
    file.exe
    正在执行。因此,您需要详细说明该错误消息。您是否尝试过使用windows调试工具捕获异常时的转储?您可能会在应用程序事件日志中看到异常。当我运行批处理文件时,我的应用程序正在工作,并且完成了步骤2,3,没有任何差异。使用“start”[此处的完整路径]\file.exe代替“start file.exe”