我正在尝试启动我在此目录中创建的程序:
C:\example\example.exe -someargument
Run Code Online (Sandbox Code Playgroud)
当电脑启动时.我试图使用此注册表项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Run Code Online (Sandbox Code Playgroud)
关键是:
Name: example
Type: REG_SZ
Data: "C:\example\example.exe -someargument"
Run Code Online (Sandbox Code Playgroud)
但我的程序还需要目录C:\ example中的文件,但由于当前工作目录不同,因此无法找到它们.可以在注册表项值中执行类似的操作
"cd C:\example\; example.exe -someargument"
Run Code Online (Sandbox Code Playgroud)
这样它会改变目录吗?或者有更好的解决方案吗?
谢谢!
aba*_*hev 12
您可以在下一个注册表项下注册您的应用程序(就像Reg2Run工具一样)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\example.exe
@="c:\example\example.exe"
Path="c:\AnotherPath"
Run Code Online (Sandbox Code Playgroud)
因此,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);
Run Code Online (Sandbox Code Playgroud)
在应用程序开始时,执行以下操作(这里是 C#,转换为 C++):
using System.IO;
:
:
Environment.CurrentDirectory = Path.GetDirectoryName(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)