localhost\administrator
로그인을 사용하여 실행중인 Windows 서비스가 있습니다. 이 서비스는 로그 파일에 내용을 기록해야하는 다른 실행 파일 (MyProcess.exe
)을 호출하기위한 것입니다. ,네트워크 공유를 통해 로컬 폴더에 액세스하십시오.
var p = new Process();
p.StartInfo.FileName = processFileName;
p.StartInfo.Arguments = arg;
p.Start();
문제는 MyProcess.exe
이 localhost\administrator
는 의심 할 여지없이 로그 폴더에 권한이있는 경우에도 로그 파일에 기록 할 수있는 권한이 거부되고 있음을 나타납니다 :이 서비스는과 같이 프로세스를 만들 수 Process.Start()
를 사용합니다. 명령 줄에서 MyProcess.exe
을 실행하면 완벽하게 작동합니다.
그래서 다른 사용자 로그인을 사용하여 프로세스가 실행되고 있습니까?
MyProcess.exe
이 로그 파일을 쓸 수있는 권한이 거부되는 다른 이유가 있습니까?
업데이트 : 로그 파일은 로컬 컴퓨터에 기록되지만 네트워크 주소 (예 : \\MyPC\LogFolder
)를 사용합니다. C:\MyFolder
을 참조하도록 코드를 변경하면 모든 것이 잘 동작합니다. 분명히 네트워크 주소에 문제가 있습니다 (로컬 일지라도).
로컬 시스템 계정이 파일에 액세스 할 수 있도록 폴더를 설정하는 데 필요한 공유 설정은 무엇입니까?
서비스를 LocalSystem으로 실행하지 않는 이유는 무엇입니까? – KingCronus
@KingCronus - 정말로, 우리는 프로세스가 쓰지 않는 이유에 대해 일종의 쓰레기였습니다. 분명히 LocalSystem에는 로그 폴더에 대한 권한이 없습니다. LocalSystem의 공식 계정 이름은 무엇입니까? 그래서 공유 폴더에 대한 계정 권한을 부여 할 수 있습니까? –
매우 이상하게 보입니다. LocalSystem은 대부분의 장소에 대해 관리자 권한을 가져야합니까? 로그 파일은 어디에 두는거야? – KingCronus