أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

ظهور رسالة خطأ عند محاولة تحديث تطبيق ClickOnce 2005 Visual Studio بعد انتهاء صلاحية الشهادة التي تم استخدامها لتوقيع التثبيت

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية925521
الأعراض
عند محاولة تحديث تطبيق Microsoft Visual Studio 2005 ClickOnce بعد انتهاء صلاحية الشهادة المستخدمة لتوقيع التثبيت تتلقى رسالة الخطأ التالية:
لا يطابق هوية النشر الاشتراك.
السبب
تحدث هذه المشكلة بسبب يجب أن تقوم بتسجيل لكافة عمليات النشر ClickOnce باستخدام شهادة رقمية. لا يمكنك استخدام شهادة منتهية الصلاحية تسجيل تطبيق ClickOnce. لنشر تحديث إلى تطبيق موجود شهادة منتهية الصلاحية يجب تعيين التطبيق شهادة جديدة. عندما لا تطابق الشهادة الجديدة الشهادة الأصلي ، تتلقى رسالة الخطأ المذكورة في قسم "الأعراض".
الحل
لحل هذه المشكلة، استخدم إحدى الطرق التالية.

الطريقة الأولى

تحديث جهاز الكمبيوتر العميل حيث تم تثبيت التطبيق ClickOnce إلى Microsoft .NET Framework 2.0 المزود بحزمة الخدمة Service Pack 1 (SP1) أو إصدار أحدث.

Windows Vista

تطبيق .NET Framework 3.5 أو SP Framework 3.5 .NET 1.

ملاحظة 3.5 .NET Framework يحتوي على العديد من الميزات الجديدة إنشاء بشكل متزايد على .NET Framework 2.0 و 3.0. يتضمن 3.5 .NET Framework في .NET Framework 2.0 المزودة بحزمة الخدمة SP1 في .NET Framework 3.0 المزودة بحزمة الخدمة SP1.

يتوفر الملف التالي للتنزيل من "مركز التنزيل لـ Microsoft":

DownloadDownload the .NET Framework 3.5 package now.

DownloadDownload the .NET Framework 3.5 Service Pack 1 package now.

للحصول على مزيد من المعلومات حول كيفية تنزيل ملفات دعم Microsoft، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
119591كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر إنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدام Microsoft أحدث من برنامج كشف الفيروس المتوفر على التاريخ الذي تم نشر الملف. يتم تخزين الملف على ملقمات محسنة الأمان التي تساعد على منع إجراء أية تغييرات غير مصرح به إلى الملف.

Windows XP

تطبيق SP1 .NET Framework 2.0 أو .NET Framework 2. 0 Service Pack 2 (SP2).

الملفات التالية غير متوفرة للتنزيل من "مركز التنزيل لـ Microsoft":

DownloadDownload the .NET Framework 2.0 Service Pack 1 (x86) package now.

DownloadDownload the .NET Framework 2.0 Service Pack 1 (x64) package now.

DownloadDownload the .NET Framework 2.0 Service Pack 2 package now.

للحصول على مزيد من المعلومات حول كيفية تنزيل ملفات دعم Microsoft، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
119591كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر إنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدام Microsoft أحدث من برنامج كشف الفيروس المتوفر على التاريخ الذي تم نشر الملف. يتم تخزين الملف على ملقمات محسنة الأمان التي تساعد على منع إجراء أية تغييرات غير مصرح به إلى الملف.

الطريقة الثانية

إلغاء تثبيت التطبيق ClickOnce رقمياً باستخدام شهادة منتهية الصلاحية. بعد ذلك إعادة تثبيت تطبيق ClickOnce المحدث يستخدم شهادة جديدة.

الطريقة الثالثة

إنشاء تجميع سطر أوامر بتحديث الشهادة. للقيام بذلك، اتبع الخطوات التالية.

تقدم Microsoft الأمثلة البرمجية فقط دون أي ضمان التعبير عن أو ضمنية. هذا يتضمن ولكن لم يقتصر على الضمانات الضمنية الخاصة بالتجارة أو الملاءمة لغرض معين. تفترض هذه المقالة تكون مألوفة مع لغة البرمجة التي يتم شرحها مع الأدوات التي يتم استخدامها لإنشاء لتصحيح الإجراءات. دعم يمكن لمهندسي لدى Microsoft شرح وظيفة إجراء محدد. ومع ذلك، لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة.
  1. في Visual Studio 2005 ، انقر فوق "جديد" في قائمة "ملف" ثم انقر فوق المشروع.
  2. انقر فوق Visual C++ انقر فوق تطبيق وحدة التحكم Win32 واكتب RenewCert في المربع اسم ثم انقر فوق موافق.
  3. في مربع الحوار معالج التطبيق Win32 انقر فوق إنهاء.
  4. In the RenewCert.cpp file, replace the existing code with the following code:
    #include "stdafx.h"void ReadPFXFile(LPCWSTR fileName, CRYPT_DATA_BLOB *pPFX){            HANDLE hCertFile = NULL;            DWORD cbRead = 0;            DWORD dwFileSize = 0, dwFileSizeHi = 0;            hCertFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);            dwFileSize = GetFileSize(hCertFile, &dwFileSizeHi);            pPFX->pbData = (BYTE *) CryptMemAlloc(dwFileSize*sizeof(BYTE));            pPFX->cbData = dwFileSize;            ReadFile(hCertFile, pPFX->pbData, pPFX->cbData, &cbRead, NULL);            CloseHandle(hCertFile);}void GetPrivateKey(CRYPT_DATA_BLOB pPFX, LPCWSTR szPassword, HCRYPTPROV *hCPContext){            HCERTSTORE hCertStore = NULL;            PCCERT_CONTEXT hCertContext = NULL;            DWORD dwKeySpec = AT_SIGNATURE;            BOOL bFreeCertKey = TRUE;            hCertStore = PFXImportCertStore(&pPFX, szPassword, CRYPT_EXPORTABLE);            hCertContext = CertEnumCertificatesInStore(hCertStore, NULL);            CryptAcquireCertificatePrivateKey(hCertContext, 0, NULL, hCPContext, &dwKeySpec, &bFreeCertKey);            CertCloseStore(hCertStore, CERT_CLOSE_STORE_FORCE_FLAG);}void PrintContainerName(HCRYPTPROV hCPContext){            DWORD containerNameLen = 0;            CHAR *szContainerName = NULL;            CryptGetProvParam(hCPContext, PP_CONTAINER, NULL, &containerNameLen, 0);            szContainerName = (CHAR *)CryptMemAlloc(sizeof(BYTE)*containerNameLen);            CryptGetProvParam(hCPContext, PP_CONTAINER, (BYTE *)szContainerName, &containerNameLen, 0);            printf("This certificate's container name is: %s", szContainerName);}void MakeNewCert(HCRYPTPROV hCPContext, LPCWSTR szCertName, LPCWSTR szPassword, CRYPT_DATA_BLOB *pPFX){            CERT_NAME_BLOB certNameBlob = {0,NULL};            PCCERT_CONTEXT hCertContext = NULL;            SYSTEMTIME certExpireDate;            HCERTSTORE hTempStore = NULL;            CertStrToName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, szCertName, CERT_OID_NAME_STR, NULL, NULL, &certNameBlob.cbData, NULL);            certNameBlob.pbData = (BYTE *)CryptMemAlloc(sizeof(BYTE)*certNameBlob.cbData);            CertStrToName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, szCertName, CERT_OID_NAME_STR, NULL, certNameBlob.pbData, &certNameBlob.cbData, NULL);            GetSystemTime(&certExpireDate);            certExpireDate.wYear += 5;            hCertContext = CertCreateSelfSignCertificate(hCPContext, &certNameBlob, 0, NULL, NULL, NULL, &certExpireDate, NULL);            hTempStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, CERT_STORE_CREATE_NEW_FLAG, 0);            CertAddCertificateContextToStore(hTempStore, hCertContext, CERT_STORE_ADD_NEW, NULL);            PFXExportCertStoreEx(hTempStore, pPFX, szPassword, NULL, EXPORT_PRIVATE_KEYS);            pPFX->pbData = (BYTE *)CryptMemAlloc(sizeof(BYTE)*pPFX->cbData);            PFXExportCertStoreEx(hTempStore, pPFX, szPassword, NULL, EXPORT_PRIVATE_KEYS);            CryptMemFree(certNameBlob.pbData);            CertCloseStore(hTempStore, CERT_CLOSE_STORE_FORCE_FLAG);            CertFreeCertificateContext(hCertContext);}void WritePFX(CRYPT_DATA_BLOB pPFX, LPCWSTR szOutputFile){            HANDLE hOutputFile = NULL;            DWORD cbWritten = 0;            hOutputFile = CreateFile(szOutputFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);            WriteFile(hOutputFile, pPFX.pbData, pPFX.cbData, &cbWritten, NULL);            CloseHandle(hOutputFile);}int _tmain(int argc, _TCHAR* argv[]){            LPCWSTR szCertFileName = NULL;            CRYPT_DATA_BLOB pPFX;            LPCWSTR szPassword = NULL;            HCRYPTPROV hCPContext = NULL;            LPCWSTR szCertName = L"CN=NewCert";            CRYPT_DATA_BLOB pPfxOutputBlob = {0,NULL};            LPCWSTR szOutFile = NULL;            // Parse the command line.            if(argc == 1)            {                        printf("renewcert <PFX File> <new cert filename> <new cert friendly name> [optional]<password>\n");                        printf("Example: renewcert oldcert.pfx newcert.pfx \"CN=MyNewCert\" MySuperSecretPassword");                        return 0;            }            if(argc >= 2)                        szCertFileName = argv[1];            if(argc >= 5)                        szPassword = argv[4];            // Uncomment this block to add <new cert filename> and <new cert friendly name> as parameters            // NOTE: <new cert friendly name> must be of format "CN=<name>"            if(argc >= 3)                        szOutFile = argv[2];            if(argc >= 4)                        szCertName = argv[3];            ReadPFXFile(szCertFileName, &pPFX);            GetPrivateKey(pPFX, szPassword, &hCPContext);            //PrintContainerName(hCPContext);            // Uncomment this section to make a new PFX rather than just printing the container name.            // Make sure you also uncomment the command line parameter section above.            MakeNewCert(hCPContext, szCertName, szPassword, &pPfxOutputBlob);            WritePFX(pPfxOutputBlob, szOutFile);            // Clean up.            CryptReleaseContext(hCPContext, 0);            CryptMemFree(pPfxOutputBlob.pbData);            CryptMemFree(pPFX.pbData);            return 0;}
  5. في ملف stdafx.h استبدال التعليمات البرمجية الموجودة مع التعليمات البرمجية التالية:
    // stdafx.h : include file for standard system include files,// or project specific include files that are used frequently, but// are changed infrequently.//#pragma once#define WIN32_LEAN_AND_MEAN                     // Exclude rarely used material from Windows headers.#include <stdio.h>#include <tchar.h>#include <windows.h>#include <wincrypt.h>
  6. من القائمة المشروع انقر فوق خصائص لفتح صفحات الخصائص لهذا المشروع.
  7. قم بتوسيع عقدة رابط ثم انقر فوق الإدخال.
  8. انقر فوق في إطار فارغة إلى يمين التبعيات إضافية ثم انقر فوق زر علامة القطع (...) لفتح مربع الحوار التبعيات إضافية.
  9. في الإطار "فارغ" ، اكتب Crypt32.lib ومن ثم انقر فوق موافق.
  10. انقر فوق تطبيق ثم انقر فوق موافق لإغلاق صفحات الخصائص.
  11. في القائمة إنشاء ، انقر فوق إنشاء الحل.
  12. بعد أن تم بناء الحل تنفيذ الأمر التالي لتحديث الشهادة: renewcert
    renewcert <OldCertificate>.pfx <NewCertificate>.pfx \"CN=<NewCertificateName>\" <Password>
    ملاحظة <OldCertificate> عنصرًا نائبًا الشهادة القديمة <NewCertificate> عنصرًا نائبًا شهادة جديدة <NewCertificateName> عنصرًا نائبًا اسم شهادة جديدة و <Password> عنصرًا نائبًا كلمة المرور.
معلومات أخرى

خطوات إعادة إنشاء هذه المشكلة

  1. بدء تشغيل Visual Studio 2005.
  2. على ملف القائمة ، انقر فوق جديد ثم انقر فوق المشروع.
  3. انقر فوق Visual C# انقر فوق تطبيق Windows واكتب WindowsApplication1 في المربع اسم ، ثم انقر فوق موافق.
  4. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق WindowsApplication1 ومن ثم انقر فوق خصائص.
  5. انقر فوق التوقيع ثم قم بتعيين شهادة انتهت مدة صلاحية قريباً.
  6. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق WindowsApplication1 ومن ثم انقر فوق نشر. بدء تشغيل "معالج النشر".
  7. على أين تريد نشر التطبيق ؟ صفحة ، اكتب محدد موقع معلومات URL صحيح ثم انقر فوق التالي. استخدم التنسيق التالي لـ URL:
    http:// ServerName / FolderName
  8. على سيتم التطبيق تصبح متوفرة دون اتصال ؟ الصفحة ، انقر فوق الخيار المناسب.

    الملاحظات
    • إذا أردت السماح للمستخدم بتشغيل التطبيق عند قطع اتصال المستخدم بالشبكة انقر فوق نعم، هذا التطبيق ستكون متوفرة عبر إنترنت أو دون اتصال. ينشئ المعالج اختصار للتطبيق على القائمة ابدأ.
    • إذا كنت ترغب في تشغيل التطبيق مباشرة من موقع النشر انقر فوق لا، لهذا التطبيق غير متوفر فقط عبر إنترنت. لا يقوم المعالج بإنشاء اختصار على القائمة ابدأ.
  9. انقر فوق التالي للمتابعة.
  10. انقر فوق "إنهاء" نشر التطبيق.
  11. تثبيت التطبيق ClickOnce من http:// ServerName / URL /publish.htm FolderName.
  12. بعد انتهاء صلاحية الشهادة كرر الخطوات من 6 إلى 10 إلى إعادة نشر التطبيق.
  13. حاول تثبيت التحديث التطبيق ClickOnce من http:// ServerName / URL /publish.htm FolderName.
انتهاء صلاحية الشهادة ClickOnce هوية التوزيع لا يطابق الاشتراك

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 925521 - آخر مراجعة: 03/12/2009 16:38:25 - المراجعة: 4.1

Microsoft Visual Studio 2005 Standard Edition, Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio 2005 Express Edition

  • kbmt kbtshoot kberrmsg kbbug kbprb KB925521 KbMtar
تعليقات