2012-05-08 2 views
3

localhost\administrator 로그인을 사용하여 실행중인 Windows 서비스가 있습니다. 이 서비스는 로그 파일에 내용을 기록해야하는 다른 실행 파일 (MyProcess.exe)을 호출하기위한 것입니다. ,네트워크 공유를 통해 로컬 폴더에 액세스하십시오.

var p = new Process(); 
p.StartInfo.FileName = processFileName; 
p.StartInfo.Arguments = arg; 
p.Start(); 

문제는 MyProcess.exelocalhost\administrator는 의심 할 여지없이 로그 폴더에 권한이있는 경우에도 로그 파일에 기록 할 수있는 권한이 거부되고 있음을 나타납니다 :이 서비스는과 같이 프로세스를 만들 수 Process.Start()를 사용합니다. 명령 줄에서 MyProcess.exe을 실행하면 완벽하게 작동합니다.

그래서 다른 사용자 로그인을 사용하여 프로세스가 실행되고 있습니까?

MyProcess.exe이 로그 파일을 쓸 수있는 권한이 거부되는 다른 이유가 있습니까?

업데이트 : 로그 파일은 로컬 컴퓨터에 기록되지만 네트워크 주소 (예 : \\MyPC\LogFolder)를 사용합니다. C:\MyFolder을 참조하도록 코드를 변경하면 모든 것이 잘 동작합니다. 분명히 네트워크 주소에 문제가 있습니다 (로컬 일지라도).

로컬 시스템 계정이 파일에 액세스 할 수 있도록 폴더를 설정하는 데 필요한 공유 설정은 무엇입니까?

+0

서비스를 LocalSystem으로 실행하지 않는 이유는 무엇입니까? – KingCronus

+0

@KingCronus - 정말로, 우리는 프로세스가 쓰지 않는 이유에 대해 일종의 쓰레기였습니다. 분명히 LocalSystem에는 로그 폴더에 대한 권한이 없습니다. LocalSystem의 공식 계정 이름은 무엇입니까? 그래서 공유 폴더에 대한 계정 권한을 부여 할 수 있습니까? –

+0

매우 이상하게 보입니다. LocalSystem은 대부분의 장소에 대해 관리자 권한을 가져야합니까? 로그 파일은 어디에 두는거야? – KingCronus

답변

1

.

내 업데이트에서 언급했듯이이 프로세스는 네트워크 공유 주소 인 \\MyPC\LogFolder을 사용하여 프로세스가 로그 폴더를 처리하고 있으며 구성을 c:\Logfolder으로 바꿨을 때 제대로 작동했습니다.

따라서 로컬 폴더를 주소 지정할 때 localhost\Administrator 계정에 충분한 권한이있는 것으로 보입니다. 그러나 네트워크 공유를 통해 가면 유효한 네트워크 자격 증명을 제시해야하며 localhost\Administrator은이를 잘라 내지 못합니다. MYDOMAIN\MyUser을 사용하도록 변경하면 네트워크 공유 주소를 사용해도 작동합니다.

+0

의미가 있습니다! 다행 이군. – KingCronus

+0

@KingCronus - 도와 줘서 고마워 .- 옳은 방향으로 생각하고있어! –

3

가장을 사용하는 경우 해당 사용자가 현재 또는 지정된 사용자가 될 수있는 사용자를 가장합니다. 그렇지 않으면 로컬 시스템의 권한으로 로컬 시스템에서 실행됩니다.

+0

가장을 사용하여 현재 프로세스를 실행하는 사용자와 동일한 사용자로 실행하는 방법은 무엇입니까? –

+0

질문에 대한 내 업데이트를 참조하십시오. –

1
p.StartInfo.Domain = "UserName"; 
p.StartInfo.Password = "Passw0rd!"; 

당신은에서 사용자 이름을 얻을 수 있습니다 : 나는 그것을 밖으로 일했다

Thread.CurrentPrincipal.Identity.Name 
+0

Windows 서비스 - UI는 허용되지 않습니다. Windows 서비스를 실행하는 사용자와 동일한 자격 증명으로 두 번째 프로세스를 실행해야합니다. –

+0

@Shaul 대신에'p.StartInfo.UseShellExecute = false; '를 시도해보십시오. 이렇게하면 동일한 사용자 자격 증명으로 실행될 수 있습니다. – SimpleVar

+0

질문에 대한 나의 업데이 트를 참조하십시오 –

관련 문제