我正在尝试启动我在此目录中创建的程序:
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"
这样它会改变目录吗?或者有更好的解决方案吗?
谢谢!
答案 0 :(得分:8)
您可以在下一个注册表项下注册您的应用程序(例如Reg2Run tool)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\example.exe
@="c:\example\example.exe"
Path="c:\AnotherPath"
因此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);
答案 1 :(得分:4)
在应用程序开始时,执行以下操作(这是C#,转换为C ++):
using System.IO;
:
:
Environment.CurrentDirectory = Path.GetDirectoryName(Application.ExecutablePath);
答案 2 :(得分:0)
如果文件总是与您的应用程序位于同一目录中,请使用Application.ExecutablePath从代码中找到文件的工作目录,然后无论如何都可以引用它们。
答案 3 :(得分:0)
如果需要从同一目录加载DLL,可以在
下创建子密钥example.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
注册表项并定义PATH
REG_SZ
值example.exe
答案 4 :(得分:0)
您还可以在文件夹中为程序创建快捷方式,并在注册表中引用此快捷方式:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Name: example
Type: REG_SZ
Data: "C:\example\example.lnk