【发布时间】:2017-08-15 21:15:06
【问题描述】:
我在我的 AppData 文件夹中创建了启动程序的软件。
然而,我想做的是让它以动态路径运行。
我当前使用的路径是:
new ProcessStartInfo(@"C:\Users\user\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
但是,我希望它不仅可以在“用户”上运行,而且可以在具有 AppData 文件夹的所有用户上运行。我尝试了以下路径(在目录中浏览时有效):
new ProcessStartInfo(@"%USERPROFILE%\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
但是,我收到“找不到文件”错误。
我将如何纠正这个问题?我希望它适用于不同的用户。
编辑
答案在我的程序中有效,但在我尝试开发的服务中无效。我试过了:
(答案)
new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Local\SOFTWAREPROGRAM\File\program.exe"))
和
string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string specificFile = Path.Combine(folder, @"\Local\SOFTWAREPROGRAM\File\program.exe");
ProcessStartInfo(specificFile)
这适用于程序(控制台项目),但不适用于服务。这是为什么呢?
我在运行时输出了specificFile,但它只包含\Local\SOFTWAREPROGRAM\File\program.exe
【问题讨论】:
-
通过 Environment.ExpandEnvironmentVariables 运行字符串
-
该文件夹的目的是存储应用程序数据,而不是应用程序本身。
-
是的,但是许多应用程序(例如 Chrome)仍然这样做。
-
感谢 cmets!