Có th? có l? do cho vi?c không đăng k? đi?u khi?n OLE

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 140346 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

OLE đi?u khi?n có th? đư?c đăng k? b?ng cách s? d?ng Visual C++ t? tr?nh đơn công c?, t? các thùng ch?a bài ki?m tra đư?c cung c?p v?i các đi?u khi?n phát tri?n Kit (CDK), ho?c b?ng cách s? d?ng các ?ng d?ng regsvr ho?c regsvr32 cung c?p v?i Visual C++. Trong m?t s? trư?ng h?p, vi?c đăng k? c?a m?t đi?u khi?n có th? th?t b?i; s? d?ng bài vi?t này đ? giúp kh?c ph?c v?n đ?.

THÔNG TIN THÊM

T?t c? các phương pháp đư?c đ? c?p trư?c đây cho đăng k? m?t OLE Control s? d?ng v? cơ b?n là k? thu?t tương t?. LoadLibrary() đư?c g?i là đ? t?i các control vào b? nh?, GetProcAddress() đư?c g?i là đ? có đư?c đ?a ch? c?a các Ch?c năng DllRegisterServer(), và sau đó DllRegisterServer() đư?c g?i là đ? đăng k? s? ki?m soát.

L? do t?i sao đăng k? c?a m?t đi?u khi?n có th? th?t b?i

  • M?t ho?c nhi?u các c?n thi?t OLE dll không trong đư?ng d?n. Hư?ng d?n đ? phân ph?i OLE đi?u khi?n c?ng như m?t l?i gi?i thích nh?ng g? DLLs là c?n thi?t đ? tàu có th? đư?c t?m th?y trong Shipctrl.wri t?p tin n?m trong thư m?c tương t? như CDK.
  • Đi?u khi?n đang t?i m?t DLL khác ngoài các OLE DLL, và DLL đó là không có trong đư?ng d?n. Khi s? ki?m soát đư?c t?i vào b? nh?, b?t k? DLLs ng?m đó đư?c n?p thông qua m?t thư vi?n nh?p kh?u c?ng đư?c n?p. N?u b?t k? c?a các DLL không n?m trong đư?ng d?n, b? đi?u khi?n không đư?c t?i thành công, v? v?y đăng k? th?t b?i.
  • M?t ho?c nhi?u DLLs có th? sai Phiên b?n. N?u b? đi?u khi?n đư?c xây d?ng v?i phiên b?n m?i hơn c?a m?t DLL so v?i cái đư?c cài đ?t trên máy tính, b? đi?u khi?n có th? không n?p đúng, do đó, đăng k? th?t b?i.
  • M?t phiên b?n c? c?a Ocd25.lib là đang đư?c liên k?t đ?n. N?u vi?c ki?m soát là b?ng cách s? d?ng các l?p h?c cơ s? d? li?u MFC, có th? có m?t v?n đ? v?i các Phiên b?n c?a t?p tin Ocd25.lib mà là đang đư?c liên k?t đ?n.
  • Đi?u khi?n OLE này t?a l?c trên m?t máy ch? Novell ? đ?a t? xa. Trong này trư?ng h?p, các quy?n truy c?p vào t?p tin .ocx có th? ngăn ch?n các ki?m soát t? t?i. Đ?m b?o r?ng các truy c?p quy?n cho .ocx t?p đư?c thi?t l?p đ? truy nh?p ch?-đ?c, máy là nh?ng đi?n h?nh thi?t l?p cho t?p th?c hi?n.

X? l? s? c? k? thu?t

N?u không có nguyên nhân có th? là đúng trong trư?ng h?p c?a b?n, h?y th? như sau k? thu?t.

  1. V?i d? án đi?u khi?n c?t cánh trong Visual C++, thi?t l?p tr?nh th?c hi?n cho Phiên làm vi?c g? l?i các OLE ki?m soát Test container (Tstcon16.exe ho?c Tstcon32.exe). khi b?n b?t đ?u th? nghi?m Container (theo các tr?nh g? l?i), b?n s? nh?n đư?c m?t c?nh báo mà các thùng ch?a bài ki?m tra không ch?a thông tin g? l?i. B? qua đi?u này và ti?n hành.
  2. T? th? nghi?m Container, c? g?ng đ? đăng k? s? ki?m soát. Watch cho g? l?i đ?u ra t? các OLE ki?m soát DLL ho?c b?t k? c?a nó ph? thu?c DLLs. N?u b?n đang ch?y s?n ph?m 16-bit, h?y nh? đ? ch?y DBWIN chương tr?nh đ? nh?n đư?c đ?u ra g? l?i.

    Đ? bi?t thông tin v? làm th? nào đ? thi?t l?p t?p tin th?c thi cho m?t DLL g? l?i phiên giao d?ch, Xin vui l?ng xem ch? đi?m tr? giúp "G? l?i DLLs" trong cu?n sách tr?c tuy?n.
Đ? thay th?, b?n có th? c? g?ng đ? đăng k? các control l?p tr?nh. L?n đ?u tiên t?o ra m?t l?a ch?n ?ng d?ng MFC AppWizard H?p tho?i d?a trên ?ng d?ng và OLE t? đ?ng hóa. Cho phép OLE t? đ?ng hóa s? kh?i t?o OLE do đó M? đăng k? đi?u khi?n s? làm vi?c đúng cách. Trong l?p h?c có ngu?n g?c CWinApp, b?n s? t?m th?y các ch?c năng InitInstance() v?i m? ban đ?u như sau:
BOOL CTestregApp::InitInstance()
{

   // Initialize OLE libraries
   if (!AfxOleInit())
   {
      AfxMessageBox(IDP_OLE_INIT_FAILED);
      return FALSE;
   }
				
T?i th?i đi?m này, thêm đo?n m? sau đây, mà s? cho phép b?n ki?m tra m? tr? v? t? LoadLibrary(), GetProcAddress(), và EFS.
#ifdef _WIN32
    HINSTANCE hDLL = LoadLibrary("some.ocx");
    if(NULL == hDLL)
    {
        // See Winerror.h for explaination of error code.
        DWORD error = GetLastError();
        TRACE1("LoadLibrary() Failed with: %i\n", error);
        return FALSE;
    }

    typedef HRESULT (CALLBACK *HCRET)(void);
    HCRET lpfnDllRegisterServer;

    lpfnDllRegisterServer =
            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");
    if(NULL == lpfnDllRegisterServer)
    {
        // See Winerror.h for explaination of error code.
        DWORD error = GetLastError();
        TRACE1("GetProcAddress() Failed with %i\n", error);
        return FALSE;
    }

    if(FAILED((*lpfnDllRegisterServer)()))
    {
        TRACE("DLLRegisterServer() Failed");
        return FALSE;
    }

#else // 16-bit
    HINSTANCE hDLL = LoadLibrary("regtest.ocx");
    if(HINSTANCE_ERROR > hDLL)
    {
        // See LoadLibrary() help for explaination of error code.
        TRACE1("LoadLibrary() Failed with: %i\n", hDLL);
        return FALSE;
    }

    typedef HRESULT (CALLBACK *HCRET)(void);
    HCRET lpfnDllRegisterServer;

    lpfnDllRegisterServer =
            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");
    if(NULL == lpfnDllRegisterServer)
    {
        // See GetProcAddress() help for explaination of error code.
        TRACE("GetProcAddress() Failed");
        return FALSE;
    }

    if(FAILED((*lpfnDllRegisterServer)()))
    {
        TRACE("DLLRegisterServer() Failed");
        return FALSE;
    }
#endif
				

Thu?c tính

ID c?a bài: 140346 - L?n xem xét sau cùng: 18 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 2.0 Professional Edition
T? khóa: 
kbcode kbctrl kbmt KB140346 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:140346
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com