.NET Windows服务本地应用程序数据与普通应用程序不同

12

在普通的控制台应用程序中,我有这个:

Environment.SpecialFolder.LocalApplicationDataC:\Users\Simon\AppData\Local\

但是在 Windows 服务中,

Environment.SpecialFolder.LocalApplicationDataC:\Windows\system32\config\systemprofile\AppData\Local\

我该如何在这两种类型的应用程序中指定相同的路径?

1个回答

4

请记住,服务运行在不同的用户配置文件下(可以是LOCAL_SERVICE、NETWORK_SERVICE等)。如果您希望它们相同,请在您的用户配置文件下运行服务(您可以在创建安装程序时指定ServiceProcessInstaller.Account属性,或在Windows Services管理器中进行设置)。


应用程序有两个部分,第一个是Windows服务,长时间运行,即使用户未登录也可以运行。第二部分是“设置管理器”。这是桌面应用程序,用于配置第一部分 - WS。两个部分都需要访问相同的设置XML文件。 - Simon
你可以在服务中添加一个清单以在管理员下运行,并将设置文件保留在安装路径中。\program files\MyService\service.exe & config.xml)由此,假设Windows应用程序驻留在与服务安装路径(\program files\MyService\settings_manager.exe)相同的文件夹中,您可以使“设置”应用程序在希望进行修改时也需要管理员权限。这将允许win vista/7机器和旧版操作系统都有权限进行设置更改。 - Brad Christie
我有一个问题,如何确定WS中的程序文件夹。这个Directory.GetCurrentDirectory()指向C:\Windows\system32。另一件事是,我需要加载一些日志记录器的设置,路径是相对的(在同一个文件夹中有xml和logger ddl)。 - Simon
顺便提一下,Windows服务有一个方法OnCustomCommand(int command),您可以使用它来通知服务进行了设置文件更改并且需要重新加载(只是值得思考的问题)。另外,如果这个答案是可接受的,请不要忘记将其标记为可接受。;-) - Brad Christie
1
顺便提一下,如果您的服务在64位操作系统上是32位可执行文件,则文件夹路径为C:\ Windows \ sysWOW64 \ config \ systemprofile \ AppData \ Local。 - James McLachlan
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接