2011-10-26 3 views
1

나는 그 프로세스 내부에서 프로세스를 소유하고있는 효과적인 사용자가 윈도우 아래에 있는지 프로그래밍 방식으로 확인하고 싶습니다.

winapi가 될 수도 있지만 .net 솔루션이 바람직합니다.

완벽하게 제어 할 수없는 복잡한 시스템이 있는데 .net 앱은 일부 네트워크 파일 시스템 경로에 '액세스 거부'를 가져오고 따라서이 경로에 액세스 할 수있는 권한을 부여 받아야 할 사용자를 알고 싶습니다. 따라서 액세스하려고하는 프로세스를 소유 한 사용자가 필요합니다. .NET되지는 않지만geteuid()에 해당하는 .net은 무엇입니까?

+0

당신은 과정을 직접 시작하거나이 승리 응용 프로그램 또는 웹 응용 프로그램입니다? 왜 환경을 점검 할 수 없어요? 사용자 이름? –

+1

[C#에서 프로세스의 소유자를 어떻게 결정합니까?] (http://stackoverflow.com/questions/777548/how-do-i-determine-the-owner-of-a-process-in -c) – sll

+0

(http://msdn.microsoft.com/en-us/library/system.environment.username.aspx) "Windows 운영 체제에 현재 로그온 한 사용자의 사용자 이름을 가져옵니다." 그래서 IMHO처럼 그것은 프로세스 소유자와 같지 않은 것처럼 들립니다. 프로세스가 asp.mvc 응용 프로그램의 어딘가에서 시작됩니다. –

답변

0

는에 Unix to Windows Porting Dictionary에서 다음 기사 :

uid_t getuid(); 
uid_t geteuid(); 

는 ...이 문제를 해결하는 좋은 시작이다. 그 기사에서

:

유닉스 프로세스는 프로세스를 시작한 사용자 의 UID (실제 UID)와 프로세스로 실행 하는 사용자의 UID 구별을 유지 (유효 UID). Windows는 이 구별을 유지하지 않습니다. SID의 값은 유닉스 유효 UID의 과 같습니다. 유닉스 실제 UID 의 동등 물은 실제 또는 효과적인 UID가 필요할 때 SID를 사용하여 얻을 수 있기 때문에 Windows 용으로 권장됩니다. 윈도우 API를

1

:

GetUserNameEx function

C#에서 :

WindowsIdentity.GetCurrent().Name; 
+0

안녕하세요, 감사합니다. GetUserNameEx 용 문서 : 호출하는 스레드와 관련된 사용자 또는 다른 보안 주체의 이름을 검색합니다. 스레드가 클라이언트를 가장하려고하면 GetUserNameEx는 클라이언트의 이름을 반환합니다. " 합법적으로 들리며 괜찮습니다. 그러나 WindowsIdentity.GetCurrent(). 정확히 같은 결과를 제공합니까? 어쩌면,하지만 난 워드 프로세서에서 찾을 수 없습니다. –

관련 문제