2012-07-24 6 views
0

등록하고 싶은 VB6 .ocx 파일이 있습니다. 이러한 .ocx 파일은 원격 시스템에 있습니다.ocx 파일을 원격으로 등록하십시오.

이러한 .ocx 파일을 프로그래밍 방식으로 등록하는 가장 좋은 방법은 무엇입니까?

string arg_fileinfo = "/s" + " " + "\"" + "\\<remotemachine>\\<directory>\\<ocx>" + "\""; 
Process reg = new Process(); 
//This file registers .dll files as command components in the registry. 
reg.StartInfo.FileName = "regsvr32.exe"; 
reg.StartInfo.Arguments = arg_fileinfo; 
reg.StartInfo.UseShellExecute = false; 
reg.StartInfo.CreateNoWindow = true; 
reg.StartInfo.RedirectStandardOutput = true; 
reg.Start(); 
reg.WaitForExit(); 
reg.Close(); 

오류가 발생하지는 않지만 .ocx를 등록하지 않습니다. 어떤 아이디어?

+0

로컬 컴퓨터에 원격 파일을 등록하거나 원격 컴퓨터에 원격 파일을 등록 하시겠습니까? – Deanna

+1

아야, 아참. 여기에 "DLL 지옥"이 있습니다. 이러지 마. 많은 라이브러리가 공유되며 사용 카운트 및 기타 제거 정보와 같은 레지스트리 업데이트가 필요한 다른 것들이 있습니다. 이미 존재하는 버전, 버전 등을 확인해야합니다. 사용자의 다른 응용 프로그램이 손상 될 위험이 있습니다. 적절한 배포 패키지를 사용하십시오. "이들은 비공개 OCX입니다"라는 가난한 변명이 있습니다. – Bob77

+0

@BobRiemersma - 이것은 단지 1 단계에 불과합니다. 나는 "새로운".ocx를 복사 할 것이고 그것은 내가 다시 등록하고 싶은 것이다. – webdad3

답변

0

string arg_fileinfo = @"/s ""\\<remotemachine>\<directory>\<ocx>"""; 
는 무시 자유예요 경고로이 걸릴 :

이 좋은 방법이 아닙니다 지내요. "네트워크에서 실행"으로 시작하기 위해 PE 파일 (EXE, DLL, OCX)을 특별히 연결해야하거나 간헐적 인 네트워크 중단으로 인해 높은 네트워크 활동 및 충돌이 발생할 위험이 있습니다. 그리고 부트 드라이브에 없거나 적어도 로컬 하드 드라이브가 등록되어 있지 않은 것은 어쨌든 분별력이 없습니다. 이 중 하나를 수행하는 것이 대부분의 시간 동안 효과가있는 것으로 보일지라도 "빈약 한 관행"목록에서 높은 순위를 차지합니다.

수용된 사례에 따라 정상적인 배포를 수행하는 것이 가장 좋은 이유는 무엇입니까?

제 생각에 어떤 프로그램의 버전 이후에 함께 버전을 던지고 Mort 개발을 많이하고있는 것 같아요. "설치"라고 생각하면 네트워크 공유에 일부 또는 전체를 덤프하고 싶습니다. 설치가 전혀 필요하지 않습니다.을 설치하면됩니다. 새 파일을 열어서 모든 작업을 마술처럼 사용할 수 있습니다. "

그룹 정책을 통해 업데이트를 푸시하는 데 사용할 수있는 관리 된 네트워크가 없으며 제품 및 업그레이드 코드를 처리하는 데 필요한 MSI 설치 프로그램 패키지를 만들지 않는다고 가정합니다 .

한 가지 대안은 reg-free COM을 사용하는 것입니다.이 COM은 많은 작은 문제를 해결할 것입니다.

이제 네트워크 공유에서 실행되는 PE 파일의 위험을 무시하거나 작은 실행 프로그램을 사용하여 무시할 수 있습니다.이 런처는 새로운 버전의 네트워크 공유를 검사 할 수 있으며, 발견되면 실제 응용 프로그램을 시작하고 종료하기 전에 새로운 파일을 로컬 PC에 복사합니다. 이것은 기본적으로 자동 업데이트 된 XCopy 배포 기술입니다.

필요에 따라 화려해질 수 있습니다. 예를 들어, 응용 프로그램이 명령 행 매개 변수를 받아들이면 새로운 버전 자체 검사를 수행하고 발견되면 작은 명령 행 매개 변수를 전달한 다음 종료합니다. 업데이터 응용 프로그램을 다시 시작하고 해당 매개 변수를 새 버전으로 전달할 수 있습니다.

하지만 예, Mort (또는 공식적인 on-the-payroll 개발자)의 삶은 고통 스러울 수 있습니다. friendly neighborhood box jockeys에주의를 기울여 관리되는 회사 LAN 환경에서 작업하는 경우에도 제대로 작업을 수행하기가 어려울 수 있습니다. 신청서가 승인 된 주요 프로젝트의 일부인 highly engineered의 일부가 아닌 경우에는 두 배가됩니다.

+1

감사합니다. Bob 통찰력에 감사드립니다. 나는 코딩 할 때 "해를 끼치 지 마라"라는 말을 따르려고합니다. .ocx 파일을 테스트 용으로 dev 컴퓨터로 옮길 때 개발자의 생산성 향상을 돕는 유틸리티를 빌드하려고했습니다. 나는 너의 충고를 받아 조심스럽게 나아갈 것이다. – webdad3

0

나는 몇 년 전에 이것을해야했다. 내가 기억할 수 있듯이 UNC 이름은 작동하지 않으며 매핑 된 드라이브 문자가 필요했습니다. 엄격하게 regsvr32 문제인지 또는 다른 무엇 (예 : Windows 95)으로 인해 발생했는지 여부는 안개 속에서 사라집니다.

1

로컬 컴퓨터에서 사용할 원격 파일을 등록하려면 UNC 경로에 파일을 등록 할 때 특별한 요구 사항은 없지만 UNC 경로 나 매핑 된 드라이브를 계속 사용할 수 있어야합니다 모든 사용자, 특히 regsvr32을 실행하는 사용자 아마도 이것은 로컬 관리자가 (기본적으로 Windows Vista +에서) 네트워크 연결을 끊을 수있는 고도가 필요할 것입니다.

예를 들어 UNC 경로의 시작 부분에서 추가 \이 누락되었습니다. 귀하의 코드는 arg_fileinfo/s "\<remotemachine>\<directory>\<ocx>"을 포함하게됩니다.
당신은 여분의 \를 추가하거나 만드는 @ 장식을 사용할 수 있습니다 그것은 많은 명확 할 때 입력 윈도우 경로 :

string arg_fileinfo = "/s \"" + @"\\<remotemachine>\<directory>\<ocx>" + "\""; 

또는 단지 전체 문자열을 사용하고 다른 인용 탈출 방법 :

(나는 어쨌든 것 알고 있기 때문에)
+0

글쎄 ocx가 등록되었다는 메시지 상자가 보입니다. (나는/s를 꺼 냈습니다.) 그러나 ocx는 원격 컴퓨터에서 시도 할 때 등록되지 않았습니다. – webdad3

+0

"원격 컴퓨터에서 시도 할 때"무엇을 의미합니까? 로컬 시스템에서만 사용할 수 있도록 등록 했으므로 (원격 호스트에서 호스트 됨), 이는 내가 당신이 무엇을했는지 분명히했습니다. – Deanna

0

원격 컴퓨터에서 사용할 파일을 등록하려면 해당 원격 컴퓨터에서 코드를 실행해야합니다.
원격 제어 소프트웨어 나 psexec.exe과 같은 원격 관리 도구를 사용하여 실제로 컴퓨터 앞에 앉아서이 작업을 수행 할 수 있습니다.

관련 문제