C#-Windows服務以LocalSystem賬戶安裝的話無法獲取我的文檔路徑

如圖,如果Window服務以上圖 Account安裝運行,則無法獲取到 以下路徑:

System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

解决方案:

1.将LocalSystem改成User,然后编译安装程序,在安装的时候填上当前的 登录用户的 账号信息即可。

 

参考资料:

MSDN明确的参考资料:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/5ca05118-06c1-4e7f-908f-df2120a51f64/c-service-account-local-system-find-my-documents-file?forum=csharpgeneral

The windows services run under different user profile(LocalService, NetworkService, LocalSystem, User). If you want to access special folder under your account, you must set the serviceProcessInstaller account property to User, and set your account's username and password at the same time.

ServiceProcessInstaller类的Account属性值可以是ServiceAcount枚举的任一值,见表2

意义

  LocalSystem     设置这个值可以指定服务在本地系统上使用高度权限的用户账户,但这个账户允许匿名用户进入网络,因此它没有网络上的权限
  LocalService     这个账户类型给任意远程服务器提供计算机证书
  NetworkService     类似于LocalService,这个值指定把计算机的证书传送给远程服务器,但与LocalSystem不同,这种服务可以以非授权用户的身份 
    登录本地系统。顾名思义,这个账户只能用于需要从网络上获得资源的服务
  User     把Account属性设置为ServiceAccount.User,表示可以指定应在服务中使用的账户
原文地址:https://www.cnblogs.com/x-poior/p/5732791.html