2017-10-12 22 views
0

컨텍스트 메뉴에서 "공유"라는 새 항목을 추가하므로 파일을 마우스 오른쪽 단추로 누르면 컨텍스트 메뉴에서이 새 항목 "공유"가 나타납니다. 나는 아래의 코드와 같이했지만, 나는이 guide에 뭔가를 보았다프로그래밍 방식으로 액세스하여 상황에 맞는 메뉴에 새 항목을 추가하는 방법?

const string MenuName = "*\\shell\\NewMenuOption"; 
const string Command = "*\\shell\\NewMenuOption\\command"; 
RegistryKey key = null; 
key = Registry.ClassesRoot.CreateSubKey(MenuName, RegistryKeyPermissionCheck.ReadWriteSubTree); 
key = Registry.ClassesRoot.CreateSubKey(Command, RegistryKeyPermissionCheck.ReadWriteSubTree); 
key.SetValue("Share", ObjectToStore); 

방법 CreateSubKey는() 키 HKEY_CLASSES_ROOT에 대한 액세스가 거부 말하는 번째 예외 System.UnauthorizedAccessException을 던져하지만 난 .NET2.0에 다른 것을 생각

+0

나는 키를 설정 한 관리자 권한으로 별도의 exe를 실행하는 probem을 해결했습니다. 이런 식으로 권리 요청은 한번만 부탁드립니다. @Michael –

답변

1

관리자 권한이 필요하다고 생각합니다. 앱을 관리자로 실행 해보십시오.
이 당신이 두 가지 선택이 작동하는 경우 :

방법의 하나가 응용 프로그램을 실행하려면 관리자 권한이 필요합니다 - 하지 좋은 생각을.
방법 2는 두 번째 (명령 줄) 프로젝트로 이러한 레지스트리 키를 만드는 용도는 하나뿐입니다. 이 앱에는 관리자 권한이 필요합니다. 그리고이 응용 프로그램 (Process.Start(...))을 기본 응용 프로그램에서 실행할 수 있습니다.

이 구멍 파일은 다음과 같이보고해야이 줄 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

를 시각적 스튜디오 프로젝트에 app.manifest/매니페스트 파일을 추가하려면 응용 프로그램 관리자 - permissons을 강제 주석을 제거하기 위해 (응용 프로그램에 더 많은 기본 항목이 있습니다 별도로 .manifest 비주얼 스튜디오

<?xml version="1.0" encoding="utf-8"?> 
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <!-- <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> --> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

그런 다음 당신은 당신의 app.manifest 파일을 선택 설정, 응용 프로그램 프로젝트로 이동하고 매니페스트에서 화면 하단에) 당신을 위해 생성합니다. 다시 빌드하십시오. 끝난.

+0

높은 권한이 필요한 응용 프로그램을 만드는 것은 가능하면 피해야합니다. 이 경우 HK_USERS에 추가하는 것이 더 적절할 수 있습니다. – DiskJunky

+1

@DiskJunky 네 말이 맞아. 나는 내 게시물을 업데이 트했습니다 :) – Michael

+0

@ FedericoRizzo 좀 더 자세한 내용은 좋을 것 ... 당신은 무엇을 시도하고 무슨 일이 벌어지고있어? – Michael

0

HK_CLASSES_ROOT에 추가하는 경우 응용 프로그램을 높은 권한으로 실행해야합니다. 이상적으로 동일한 하위 키가 있어야하는 HK_USERS를 변경해야합니다.

+0

감사합니다. 작동합니다 –

+0

잠시만 기다려주십시오. HK_USER를 사용하여 컨텍스트 메뉴를 편집 할 수 있습니까? @DiskJunky –

+0

이 게시물에 대한 자세한 방법 안내; https://stackoverflow.com/a/2124396/1838819 – DiskJunky