Excel VBA에서 COM interop에 대한 관리 권한이 없는 regasm 호출
관리자 권한 없이 regasm을 호출하는 방법에 대해서는 여기에서 이미 설명했습니다.
사용자가 관리자 권한 없이 엑셀 VBA에서 배포하고 사용할 수 있는 COM 라이브러리를 만들려고 합니다.저는 Excel VBA의 등록 없는 COM 객체를 사용하는 것에 대해 사람들이 큰 성공을 거두지 못하는 것 같아 레가스 해결 방법이 마음에 들었습니다.저는 사용자들이 구문 완성을 통해 혜택을 받을 수 있도록 조기 바인딩도 원합니다.
그러나, 상기 질문에서 허용된 답변은 사용자의 컴퓨터에서 어셈블리 dll을 어디에 놓을 것인지에 대해 설명하지 않습니다.GAC에 어셈블리를 설치하려면 관리자 권한이 필요해서 dll 파일을 어디에 둘 수 있는지 궁금합니다.응용 프로그램의 dir가 참조된 dll을 검색하고 있다고 가정하지만 관리자 권한이 없으면 다시 엑셀의 dll을 dir에 넣을 수 없습니다.엑셀 고객과 함께 해결 방법을 사용할 수 있습니까?관리자 권한 없이도 VBA에서 COM 개체를 먼저 배포할 수 있는 다른 방법이 있습니까?
COM interop에 대한 관리 권한이 없는 regasm 호출
제 생각에는 API와 함께 사용하여 자동 등록을 구현하는 것이 가능해야 한다고 생각합니다.HKCU벌집은 UAC에 친화적인 방법으로.좀 더 자세한 답변을 여기에 올렸습니다.
네, 지금 두 가지 문제가 있습니다. GAC나 c:\program files 하위 디렉토리처럼 배치해야 하는 곳에 둘 수 없습니다.그 위치들은 또한 UAC 고도가 필요하기 때문입니다.레가스 운영도 잊으셨을 겁니다파일을 찾을 위치를 CLR에 지정하는 데 필요한 /codebase 옵션을 사용하여 exe.
사용자는 DLL을 쓰기 액세스 권한이 있는 디렉터리에 복사할 수 있는 충분한 권한을 가져야 합니다.일반적으로 앱 데이터 하위 디렉터리와 같이 c:\users\username에 있는 디렉터리만 해당합니다.사용자 이름이 다르기 때문에 .reg 파일을 개별 사용자별로 조정해야 하는 문제를 해결해야 합니다.그래서.CodeBase.reg 파일의 값을 사용자마다 변경해야 합니다.이것은 가볍게 말하자면, 스케일이 좋지 않습니다.
당신이 찾은 답은 아주 좋은 답이 아닙니다.실제로 작동하는 유일한 해결책은 자신의 등록 기능을 작성하는 것입니다.HKLM이 아닌 HKCU에 레지스트리 키를 쓰는 것.[ComRegisterFunction] 속성을 사용합니다..reg 파일을 통해 어떤 키를 작성해야 하는지 알 수 있습니다.그리고 당신은 어셈블리를 사용합니다.Assembly()를 실행합니다.CodeBase 레지스트리 값에 대해 쓸 내용을 알 수 있는 위치입니다.[ComUnregisterFunction](컴 등록 취소 기능)을 잊지 마십시오.
적어도 정신적으로는 LAN 관리자가 이러한 사용자에게 부과한 제한을 우회하려고 한다는 점을 명심해야 합니다.그들은 자신들이 지원하는 기계에서 어떤 종류의 코드가 실행되는지 아는 것에 많은 신경을 씁니다.그러면 문제가 생길 수도 있어요, 적어도 그 사람하고 얘기는 해봐야죠.
언급URL : https://stackoverflow.com/questions/23063552/calling-regasm-without-administrative-rights-for-com-interop-in-excel-vba
'programing' 카테고리의 다른 글
| 워드프레스에서 프로그래밍 방식으로 사용자 아바타 변경 (0) | 2023.10.19 |
|---|---|
| MySQL JOINs는 어떤 순서로 평가됩니까? (0) | 2023.10.19 |
| 오라클에서 날짜 시간 쿼리 (0) | 2023.10.19 |
| django와 wsgi로 하위 디렉토리에서 워드프레스 블로그 제공 (0) | 2023.10.19 |
| AJAX 호출 사용 시 브라우저 자동 완성/자동 채우기에 저장하는 방법 (0) | 2023.10.19 |