2012-05-15 2 views
0

새 dll을 배포 할 때마다 클라이언트 컴퓨터에서 gac에 dll을 등록하도록 requeres하는 응용 프로그램이 있습니다. 문제는 클라이언트 컴퓨터가 UAC가 설정된 사용자 만 제한된다는 것입니다.dac을 다른 사용자로 gac에 등록

응용 프로그램은 관리자 권한을 가진 사용자의 자격 증명을 알고 있습니다. 내가 processStartInfo.UseShellExecute = false; 그때 나는 UAC가 오류가 여물 얻을 수없는 경우

문제가 "요청 opperation는 고도가 필요"내가 processStartInfo.UseShellExecute = true;이 있다면 그것은 다른 사용자로 모든 일을 실행하는 것을 허용하지 않습니다 "프로세스 객체 인 UseShellExecute 속성은 사용자로 프로세스를 시작하기 위해 false로 설정해야합니다"

 internal static void Register(String assemblyName) 
    { 
     ProcessStartInfo processStartInfo = new ProcessStartInfo(lcDir + "gacutil.exe", string.Format("/i {0}.dll", assemblyName)); 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.WorkingDirectory = lcDir; 
     processStartInfo.UserName = lcUser; 
     processStartInfo.Password = Password; 
     processStartInfo.Domain = lcDomain; 

     processStartInfo.Verb = "runas"; 

     Process process = Process.Start(processStartInfo); 
     process.WaitForExit(); 
    } 
나는 그런 종류의 "모범 사례"가 무엇인지 알고 싶습니다

? 나는 창세기가 바이러스처럼 보이는 것을 알고 있습니다.

나는 다음과 같은 실현하려하고 싶은 것 :

  • 사용자 나던은 관리 사용자의
  • credencal 년대는 프로그램의 데이터베이스
  • 로 저장됩니다 관리자 권한이있는 계정을 알아야 가능한 많은 자동 등록.
+0

다른 사람이 설명없이 내 질문에 투표 한 것처럼 보입니다. 어쨌든 입력 마누엘 Amstutz하지만 그 dosen't 내가 작동하지 않는 관리자 계정으로 전체 애플 리케이션을 실행하면 나는 오류 알 수없는 오류가 발생하는 프로그램을 실행하면 이후 작동하지 것 – Jester

답변

0

코드의이 부분을 관리자로 실행해야합니다. 필요한 것은 가장입니다.

당신은 보안상의 이유로 응용 프로그램 내에서 같은 사용자 문자열을 포함하는 것은 아니다

Aricle Impersonation on Code project

0

이 문서를 참조하십시오.

시스템 관리 서비스 또는 이와 유사한 방법을 사용하여 배포를 관리하고 배포를 관리한다는 디자인 아이디어가 있습니다.

저는 유닉스 작품과 매우 유사한 사설 어셈블리를 사용했습니다.

SQL Native Client에서 클래스 지원을 추가하려는 경우 매번 배포하는 것이 어려울 것입니다.

로컬 관리자 이름과 암호를 알고있는 경우 중앙 배포 솔루션을 사용하고 관리자로 가장 할 수 없습니다.

+0

잘 보안 측면에 제공됩니다 신임장이 암호화 된 문자열로 SQL 데이터베이스에 저장되기 때문에 어느 정도. 그리고 SQL Server는 일정 수준의 보호 기능을 제공합니다. 어쨌든 나의 유스 케이스는 존재해서는 안되는 것이지만, 나는 잘 알고있다. – Jester

관련 문제