2009-11-20 4 views
3

실행중인 모든 프로세스를 전체 경로와 함께 나열하고 있습니다. 내 응용 프로그램은 XP에서 잘 실행되지만 Vista에서는 MainModule.FileName에 액세스하는 동안 액세스가 거부 된 예외를 제공합니다. (UAC 때문에, 나는 생각한다).process.MainModule.FileName에 액세스하는 동안 액세스가 거부 된 예외가 발생했습니다.

foreach (Process process in Process.GetProcesses()) 
{ 
    sProcess = process.ProcessName; 
    sFullpath = process.MainModule.FileName; 
.. 
.. 
.. 
    } 

나는 UAC를 해결할 해결책을 찾지 못했습니다. 어떤 단서 ??

+0

23 일 및 답변 없음 !!! 이상한!!! – Manjoor

+0

[프로세스 경로를 가져 오는 동안 액세스가 거부되었습니다.] 가능한 복제본 (https://stackoverflow.com/questions/3399819/access-denied-while-getting-process-path) – wimh

+0

날짜를보고 문제가 발생했습니다 – Manjoor

답변

2

UAC가 아닐 수도 있습니다. 프로세스가 x32이고 쿼리되는 프로세스가 x64이거나 그 반대 일 수 있습니다. process.MainModule Win32Exception, "ReadProcessMemory 또는 WriteProcessMemory 요청의 일부만 완료되었습니다."발생하면 숨 막히지 것.

그럴 수도 있니?

+0

오늘 같은 문제가있었습니다. 대상 플랫폼을 Any로 설정 한 것 같아 나를 위해 해결했습니다. –

+0

Target이 x86 (64 비트 모드에서 작동하지 않는 일부 32 비트 DLL 사용) 및 x64에서 실행 중일 때이를 극복 할 수 있습니까? – Muxa

0

이 Process.MainModule가 EnumProcessModules API를 사용하고 있습니다 :

이 링크를 참조하십시오

을하는 경우 대상에서 모듈 목록 프로세스가 손상되었거나 아직 초기화되지 않았거나 DLL이로드되거나 언로드 된 결과로 함수 호출 중에 모듈 목록이 변경되면 EnumP rocessModules가 실패하거나 잘못된 정보를 반환 할 수 있습니다.

대상 프로세스가 불안정한 동안 ERROR_PARTIAL_COPY (299)가 표시되는 동안이 함수를 사용하려고 할 수 있습니다.

관련 문제