Windows 使用注册表启动程序,并更改当前工作目录?

Windows 使用注册表启动程序,并更改当前工作目录?,windows,registry,Windows,Registry,我正在尝试启动我在此目录中制作的程序: C:\example\example.exe -someargument 当电脑启动时。我正在尝试使用此注册表项: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 关键在于: Name: example Type: REG_SZ Data: "C:\example\example.exe -someargument" 但我的程序也需要C:\example目录中的文件,但

我正在尝试启动我在此目录中制作的程序:

C:\example\example.exe -someargument
当电脑启动时。我正在尝试使用此注册表项:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
关键在于:

Name: example
Type: REG_SZ
Data: "C:\example\example.exe -someargument"
但我的程序也需要C:\example目录中的文件,但由于当前工作目录不同,因此找不到这些文件。可以在注册表项值中执行类似操作吗

"cd C:\example\; example.exe -someargument"
这样它就能改变目录了?还是有更好的解决方案


谢谢

如果文件始终与应用程序位于同一目录中,请使用从代码中查找文件的工作目录,然后您可以无论如何引用它们。

您可以在下一个注册表项下注册应用程序(就像这样)

所以
System.Diagnostics.Run(“example.exe”)将使用指定的工作路径启动应用程序

或者另一种方法:使用C#编写启动器。您可以使用PowerShell cmdlet执行相同的操作

var info = new System.Diagnostics.ProcessStartInfo(@"c:\example\example.exe", "-someargument")
{
    WorkingDirectory = @"c:\AnotherPath"
};
System.Diagnostics.Process.Start(info);

如果需要从同一目录加载DLL,可以在下创建子项
example.exe

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

注册表项并定义
PATH
REG_SZ
value
example.exe

在应用程序开始时,执行以下操作(这是C#,转换为C++):


您还可以在文件夹中为程序创建快捷方式,并在注册表中引用此快捷方式:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Name: example
Type: REG_SZ
Data: "C:\example\example.lnk

当你说“我做了”时,你有没有写example.exe?如果是,用哪种语言?这只是一个提供指导的代码片段。“使用”语句就在那里,以防你的应用程序还没有它。是的,如果需要的话,请继续完全限定显示的所有其他类名,具体取决于您的代码,但请不要因为太迂腐而否决一个完美的解决方案。这不是所谓的精神。我不认为这个答案符合要求。指定“Path”将提供一个要附加到Path环境变量的字符串。它对当前工作目录不做任何操作。
    using System.IO;
:
:
    Environment.CurrentDirectory = Path.GetDirectoryName(Application.ExecutablePath);
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Name: example
Type: REG_SZ
Data: "C:\example\example.lnk