首页 > 解决方案 > 服务程序中的 LocalApplicationData 与控制台应用程序中的不同

问题描述

我正在创建一个访问文件夹路径的服务:

string localAppDataFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

不幸的是,返回的文件夹不是:

C:\Users\mainuser\AppData\Local

... 但:

C:\Windows\system32\config\systemprofile\AppData\Local

...反而。

mainuser是当前登录的用户。服务是否可以启动放置在当前用户中的程序AppData\Local?我知道您可以进入Services-> Right click Properties-> Log on并输入密码和帐户名,但我正在寻找一种编程解决方案,最好使用sc create command.

或者,我可以将所有感兴趣的文件夹移动到C:\ProgramData并完全避开当前用户。有没有办法将文件保存在用户中AppData\Local并使用没有密码的编程解决方案?

标签: c#sc.exe

解决方案


简而言之,服务不会(也不应该)为用户启动程序或访问一般用户信息(除非它们以指定用户身份运行)。他们不知道用户及其个人资料,他们的用例是作为系统的一部分运行

如果您想在用户登录时运行应用程序,请使用组策略,或将其添加到用户设置以在启动时运行。如果需要,请在安装程序中进行设置

这是每个服务的工作方式,也是 Windows 长期以来的常态(驱动程序除外)


推荐阅读