2009-12-21 3 views
11

사용자 정의 설치 작업을 위해 설치 프로그램을 실행하는 사용자의 사용자 이름을 가져와야합니다. 설치 관리자가 특별한 권한을 얻으므로 Environment.UserName은 "SYSTEM"만을 제공합니다.Windows 설치 프로그램의 사용자 지정 작업에서 현재 사용자 이름을 얻으려면 어떻게해야합니까?

Environment.SpecialFolders.ApplicationData는 현재 사용자 appdata 폴더를 반환하지만 안정적으로 사용자 이름을 파기 할 수는 없습니다.

더 많은 경우의 특성 : 사용자 지정 작업은 설치 클래스 실행 후 설치하고 프로젝트의 하나입니다 비주얼 스튜디오 2008 설치 프로젝트를 사용하여

.

+0

정보를 더 제공 할 수 있습니까? 설치 프로젝트를 사용하고 있습니까? WiX 기반 빌딩? 사용자 지정 작업을 예약하는 위치 (시퀀스, 위치)를 추가 할 수 있습니까? 지연이 실행되고 있습니까? 즉시? –

+0

질문에 조금 더 자세히 설명했습니다. 나는 WiX에 손대지 않았다. 확실히 그것이 즉각적이다. – Septih

답변

3

기본적으로 할 수 없습니다.

UAC in MSI Notes: Credential Prompt and Permissions이 중 일부는 더 상세하게,하지만 당신은 자격 증명보기의 설치 지점에서 현재 사용자 에 로그인 시스템을 상승 일단 효율적으로 (여러 사람이 로그인하고 실행중인 응용 프로그램을 할 수 있습니다 설명 기계이기 때문에 실제 기계 앞에 앉아있는 사람이 아니라 프로세스 자체의 컨텍스트에서 생각해야합니다.

2

WindowsIdentity.GetCurrent()를 사용하십시오. System.Security.Principal 네임 스페이스의 이름입니다. 여기에는 도메인 부분도 포함되므로 필요없는 경우 분할 부분을 추가하십시오. WindowsIdentity.GetCurrent(). Name.Split ('') [1]입니다.

using System.Security.Principal; 

this.nametext = WindowsIdentity.GetCurrent().Name.Split('')[1]; 
+0

다른 답변도 있었지만 삭제 된 것으로 보입니다. 이것은 Vista에서 사용자 이름을 반환하지 않으며 여전히 SYSTEM – Septih

+0

이 게시물을 살펴 봅니다. http://stackoverflow.com/questions/400872/c-active-directory-check-username-password. 유효성 검사에 대한 자세한 내용이지만 유용 할 수 있습니다. –

2

먼저 Impersonate bit이 OFF로 설정되어 있는지 확인하십시오. Here is how.

불행하게도, 직접 비주얼 스튜디오 IDE에 설치 프로젝트 의 UI에서 사용자 지정 액션이 플래그를 설정 수있는 방법이 없습니다. Visual Studio 2005에 게시 단계를 사용하여 MSI를 수정하여 이전 전략을 사용하여 비트를이 에 설명 된대로 설정할 수 있습니다.

둘째, 나는 사람들이 비스타와이 문제를 갖고있는 것 같다 누군가 MSDN에이 질문을하고 자신의 솔루션은 블로그 게시물을 따르도록했다 here을 연결 때문에 Vista를 실행하는 가정합니다.

UAC in MSI Notes: The NoImpersonate Bit Mistake에 대한 Robert Flaming의 블로그 게시물 또한 이러한 문제에 대한 통찰력을 제공합니다.

+0

맞습니다. 이미 Impersonate 비트가 꺼져 있습니다. 나는 msdn 질문에 대답하고 매니 페스트 솔루션을 시도한 블로그를 보았지만 아무 것도 변경하지 않은 것으로 보입니다. 기본적으로 블로그의 매니페스트를 복사하여 setup.exe.manifest로 저장했습니다. – Septih

+0

죄송합니다.하지만 더 이상 정보가 없습니다. –

2

나는 VS 설치 프로젝트에 결코 손을 대지 않았다. 자신의 문제를 살펴보면 CA가 지연된 권한 (높은 권한으로 실행)으로 실행되는 것으로 보입니다.

나는이 단락이 포함 된 긴 글 1 건너 온 VS 설치 프로젝트를 위해 인터넷을 검색 ("연기"를 검색) : 즉

, 비주얼 스튜디오 디자인은 사용자 지정 작업에 당신을 제한하는 파일이 시스템에있을 때 호출됩니다 (지연된 사용자 정의 작업). 즉, CustomActionData 속성을 사용해야합니다. MSI 파일을 생성하는 다른 도구는보다 융통성이 있으므로 복잡한 설정을 예상 할 경우 해당 도구를 조사하십시오.

1

: http://www.simple-talk.com/dotnet/visual-studio/visual-studio-setup---projects-and-custom-actions/

7

당신은 환경 변수에서 몇 가지 정보를 얻을 수 있습니다. 사용 중임

Environment.GetEnvironmentVariable ("USERNAME");

현재 사용자 이름을 얻을 수 있습니다.

+0

이 답변은 저에게 효과적입니다. 로그인 한 사용자가 아닌 고가의 설치 프로그램 사용자를 반환합니다. 커스텀 액션. –

+0

또한이 방법을 사용하여 도메인을 얻습니다. Environment.GetEnvironmentVariable ("USERDOMAIN") + "\\"+ Environment.GetEnvironmentVariable ("USERNAME") –

관련 문제