File.exists() 为本地帐户中的服务返回 false

Pra*_*tik 2 c# windows-services network-protocols

我有在本地系统帐户下运行的 Windows 服务。我正在检查 File.Exist(网络中的文件)。这适用于用户帐户,但它在本地系统帐户中为 file.exists() 返回 false。我无法使用用户帐户运行服务。提前致谢。

protected override void OnStart(string[] args) {
  m_objLogFile.LogError("******************Servicestarted*****************", "", "");
  Thread th = new Thread(new ThreadStart(StartIndexing));
  th.Start(); 
} 
private void StartIndexing() 
{ 
  bool bVal = File.Exists(@"100.100.1.1\f\Files\abc.txt"); 
}
Run Code Online (Sandbox Code Playgroud)

slu*_*ter 5

本地系统帐户 (LSA) 是特定于机器的帐户 - 虽然它在机器上具有很高的特权,但它在网络上没有任何特权。

要解决此问题:

  • 在具有网络访问权限的现有用户的凭据下运行该服务
  • 或创建一个新的低权限域帐户并仅为其分配所需的权限,然后使用该用户的凭据运行该服务

您也不能100.100.1.1\f\Files\abc.txt用作文件的路径 - 首先尝试使用双反斜杠作为前缀:\\100.100.1.1\f\Files\abc.txt. 如果没有那个双反斜杠,操作系统将在您当前的工作目录中搜索一个名为 100.100.1.1 的文件夹。(请注意,您说这在普通用户凭据下有效 - 在这里复制代码时您弄错了或犯了错误)。