???? ????? ??? ??? ?????? ????? ????? 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":

?? ??? ??????????? ??? ??????
Download
Download the .NET Framework 3.5 package now.

?? ??? ??????????? ??? ??????
Download
Download 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":

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

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

?? ??? ??????????? ??? ??????
Download
Download 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.

???????

???? ???????: 925521 - ????? ??? ??????: 15/???? ?????/1430 - ??????: 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
????? ????
???: ??? ????? ??? ?????? ???????? ?????? ????? ???? ????? ?????????? ????? ?? ????????? ?????? ????. ???? ???? ?????????? ???? ?? ???????? ???????? ?????? ????????? ????? ????????? ???????? ????? ???????? ?????? ?? ?????? ??? ?? ???????? ???????? ?? ????? ??????? ?????? ??? ??????? ?????? ??. ?????? ?? ???? ??? ??????? ???????? ????? ?? ???? ????? ?????? ??? ????? ??? ????? ??????? ?? ????? ?? ?????? ??? ??? ??????? ??????? ?? ????? ????? ????? ????? ?????. ?? ????? ???? ?????????? ??????? ??? ????? ?? ??????? ?? ????? ?????? ?? ??? ????? ?? ????? ??????? ?? ???????? ?? ??? ???????. ???? ???? ?????????? ???????? ??? ????? ?????? ??????? ??????
???? ??? ????? ??????? ?????? ??????????925521

????? ???????

 

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