Šobrīd esat bezsaistē, tiek gaidīts atkārtots savienojums ar internetu

Kā lai šifrētu un atšifrētu faila pielikumu programmiski, izmantojot Visual c# programmā InfoPath 2003

Atbalsta nodrošināšana programmatūrai Office 2003 tika pārtraukta

Korporācija Microsoft pārtrauca programmatūras Office 2003 atbalsta nodrošināšanu 2014. gada 8.aprīlī. Šīs izmaiņas skāra programmatūras atjauninājumus un drošības opcijas. Uzziniet, kā tas ietekmēs jūs un kā nodrošināt aizsardzību arī turpmāk.

SVARĪGI! Šis raksts ir tulkots, izmantojot Microsoft mašīntulkošanas programmatūru, un šo rakstu nav tulkojis cilvēks. Microsoft piedāvā gan rakstus, ko tulkojuši cilvēki, gan mašīntulkotus rakstus, tāpēc jebkuram zināšanu bāzes rakstam varat piekļūt savā dzimtajā valodā. Tomēr mašīntulkotu rakstu kvalitāte ne vienmēr ir teicama. Šādos rakstos var būt leksikas, sintakses vai gramatikas kļūdas, kas līdzinās kļūdām, kādas pieļauj ārzemnieks, runājot jūsu valodā. Microsoft neuzņemas atbildību par jebkādām neprecizitātēm, kļūdām vai bojājumiem, ko izraisījis kļūdains satura tulkojums vai kas radušās tulkojuma lietojuma gaitā. Turklāt Microsoft regulāri atjaunina mašīntulkošanas programmatūru.

Noklikšķiniet šeit, lai skatītu šī raksta versiju angļu valodā: 892730
KOPSAVILKUMS
Microsoft Office InfoPath 2007 vai Microsoft Office InfoPath 2003 Service Pack 1 (SP1) var izmantot, Faila pielikumu vadīklu, InfoPath veidlapas veidnei pievienot failu. Īpašos apstākļos, ieteicams, lai šifrētu un atšifrētu tad faila, kas pievienots Faila pielikumu kontroli. Šajā gadījumā jūs varat izmantot Microsoft Visual C# izveidot Kodētājs klases un Dekodētājs klases. Pēc tam varat izmantot Kodētājs klases un Dekodētājs klases, lai šifrētu un atšifrētu failu pielikumu.
IEVADS
Šajā rakstā ir aprakstīti kā lai šifrētu un atšifrētu faila pielikumu programmiski, izmantojot Microsoft Visual C# programmā InfoPath 2003. Papildinformāciju, kā to izdarīt, InfoPath 2010 vai InfoPath 2007 skatīt šādu web lapu: Kā kodēšanas un dekodēšanas faila pielikumu programmiski, izmantojot Visual c# InfoPath 2010 vai InfoPath 2007.
PAPILDINDORMĀCIJA
Microsoft piedāvā programmēšanas piemērus tikai ilustrācija bez izteiktas vai netiešas garantijas. Tas ietver, bet neaprobežojas ar netiešām garantijām par piemērotību pārdošanai vai atbilstību noteiktam mērķis. Šajā rakstā tiek pieņemts, ka esat iepazinies ar programmas valodu, kas tiek pierādīta un ar rīkiem, ko izmanto, lai izveidotu un atkļūdošanas procedūras. Microsoft atbalsta inženieri var palīdzēt izskaidrot funkcionalitāti konkrētajā procedūrā, taču viņi nemainīs šos piemēri, kas neveidos jaunas procedūras, kas atbilstu jūsu īpašas prasības.

Visual c# InfoPath 2003 projekta izveide

  1. Startēt Microsoft Visual Studio.NET 2003.
  2. Par Failu izvēlni, noklikšķiniet uzJaunu, un pēc tam noklikšķiniet uz Projekts.
  3. Programmā Jauns projekts dialoglodziņā, noklikšķiniet uzVisual c# projektiem programmā Microsoft Office InfoPath projektus mapi.
  4. Programmā vārds lodziņā ierakstietAttachmentEncoding, un pēc tam noklikšķiniet uzlabi.
  5. Microsoft Office Project vednī noklikšķiniet uzIzveidotu jaunu veidlapas veidni, un pēc tam noklikšķiniet uzApdare.

    Microsoft Office Project vednis izveido jaunu Visual Studio.NET 2003 projekts, kas saucas AttachmentEncoding. An Arī izveidot InfoPath veidlapas veidni. InfoPath veidlapas veidne ir nosaukts AttachmentEncoding.

Izveidot Visual Studio Encoder klasē.NET 2003

  1. Solution Explorer, ar peles labo poguAttachmentEncoding, norādiet uz Pievienot, un pēc tam noklikšķiniet uz Pievienot jaunu vienumu.
  2. Programmā Pievienot jaunu vienumu dialoglodziņā, noklikšķiniet uzKlase programmā Veidne: rūts tipsInfoPathAttachmentEncoder.cs programmāvārds rūtiņu un pēc tam noklikšķiniet uz Atvērt.
  3. Aizstāt visu kodu InfoPathAttachmentEncoder.cs failu ar šādu kodu.
    using System;using System.IO;using System.Text;using System.Security.Cryptography;namespace InfoPathAttachmentEncoding{	/// <summary>	/// InfoPathAttachment encodes file data into the format expected by InfoPath for use in file attachment nodes.	/// </summary>	public class InfoPathAttachmentEncoder	{		private string base64EncodedFile = string.Empty;		private string fullyQualifiedFileName;		/// <summary>		/// Creates an encoder to create an InfoPath attachment string.		/// </summary>		/// <param name="fullyQualifiedFileName"></param>		public InfoPathAttachmentEncoder(string fullyQualifiedFileName)		{			if (fullyQualifiedFileName == string.Empty)				throw new ArgumentException("Must specify file name", "fullyQualifiedFileName");			if (!File.Exists(fullyQualifiedFileName))				throw new FileNotFoundException("File does not exist: " + fullyQualifiedFileName, fullyQualifiedFileName);			this.fullyQualifiedFileName = fullyQualifiedFileName;		}		/// <summary>		/// Returns a Base64 encoded string.		/// </summary>		/// <returns>String</returns>		public string ToBase64String()		{			if (base64EncodedFile != string.Empty)				return base64EncodedFile;			// This memory stream will hold the InfoPath file attachment buffer before Base64 encoding.			MemoryStream ms = new MemoryStream();			// Get the file information.			using (BinaryReader br = new BinaryReader(File.Open(fullyQualifiedFileName, FileMode.Open, FileAccess.Read, FileShare.Read)))			{				string fileName = Path.GetFileName(fullyQualifiedFileName);				uint fileNameLength = (uint)fileName.Length + 1;				byte[] fileNameBytes = Encoding.Unicode.GetBytes(fileName);				using (BinaryWriter bw = new BinaryWriter(ms))				{					// Write the InfoPath attachment signature. 					bw.Write(new byte[] { 0xC7, 0x49, 0x46, 0x41 });					// Write the default header information.					bw.Write((uint)0x14);	// size					bw.Write((uint)0x01);	// version					bw.Write((uint)0x00);	// reserved					// Write the file size.					bw.Write((uint)br.BaseStream.Length);					// Write the size of the file name.					bw.Write((uint)fileNameLength);					// Write the file name (Unicode encoded).					bw.Write(fileNameBytes);					// Write the file name terminator. This is two nulls in Unicode.					bw.Write(new byte[] {0,0});					// Iterate through the file reading data and writing it to the outbuffer.					byte[] data = new byte[64*1024];					int bytesRead = 1;					while (bytesRead > 0)					{						bytesRead = br.Read(data, 0, data.Length);						bw.Write(data, 0, bytesRead);					}				}			}			// This memorystream will hold the Base64 encoded InfoPath attachment.			MemoryStream msOut = new MemoryStream();			using (BinaryReader br = new BinaryReader(new MemoryStream(ms.ToArray())))			{				// Create a Base64 transform to do the encoding.				ToBase64Transform tf = new ToBase64Transform();				byte[] data = new byte[tf.InputBlockSize];				byte[] outData = new byte[tf.OutputBlockSize];				int bytesRead = 1;				while (bytesRead > 0)				{					bytesRead = br.Read(data, 0, data.Length);					if (bytesRead == data.Length)						tf.TransformBlock(data, 0, bytesRead, outData, 0);					else						outData = tf.TransformFinalBlock(data, 0, bytesRead);					msOut.Write(outData, 0, outData.Length);				}			}			msOut.Close();						return base64EncodedFile = Encoding.ASCII.GetString(msOut.ToArray());		}	}}

Izveidot Visual Studio Decoder klasē.NET 2003

  1. Solution Explorer, ar peles labo poguAttachmentEncoding, norādiet uz Pievienot, un pēc tam noklikšķiniet uz Pievienot jaunu vienumu.
  2. Programmā Pievienot jaunu vienumu dialoglodziņā, noklikšķiniet uzKlase programmā Veidne: rūts tipsInfoPathAttachmentDecoder.cs programmāvārds rūtiņu un pēc tam noklikšķiniet uz Atvērt.
  3. Aizstāt visu kodu InfoPathAttachmentDecoder.cs failu ar šādu kodu.
    using System;using System.IO;using System.Text;namespace InfoPathAttachmentEncoding{	/// <summary>	/// Decodes a file attachment and saves it to a specified path.	/// </summary>	public class InfoPathAttachmentDecoder	{		private const int SP1Header_Size = 20;		private const int FIXED_HEADER = 16;		private int fileSize;		private int attachmentNameLength;		private string attachmentName;		private byte[] decodedAttachment;		/// <summary>		/// Accepts the Base64 encoded string		/// that is the attachment.		/// </summary>		public InfoPathAttachmentDecoder(string theBase64EncodedString)		{			byte [] theData = Convert.FromBase64String(theBase64EncodedString);			using(MemoryStream ms = new MemoryStream(theData))			{				BinaryReader theReader = new BinaryReader(ms);							DecodeAttachment(theReader);			}		}		private void DecodeAttachment(BinaryReader theReader)		{			//Position the reader to get the file size.			byte[] headerData = new byte[FIXED_HEADER];			headerData = theReader.ReadBytes(headerData.Length);			fileSize = (int)theReader.ReadUInt32();			attachmentNameLength = (int)theReader.ReadUInt32() * 2;						byte[] fileNameBytes = theReader.ReadBytes(attachmentNameLength);			//InfoPath uses UTF8 encoding.			Encoding enc = Encoding.Unicode;			attachmentName = enc.GetString(fileNameBytes, 0, attachmentNameLength - 2);			decodedAttachment = theReader.ReadBytes(fileSize);		}		public void SaveAttachment(string saveLocation)		{			string fullFileName = saveLocation;			if(!fullFileName.EndsWith(Path.DirectorySeparatorChar))			{				fullFileName += Path.DirectorySeparatorChar;			}			fullFileName += attachmentName;			if(File.Exists(fullFileName))				File.Delete(fullFileName);						FileStream fs = new FileStream(fullFileName, FileMode.CreateNew);			BinaryWriter bw = new BinaryWriter(fs);			bw.Write(decodedAttachment);			bw.Close();			fs.Close();		}		public string Filename		{			get{ return attachmentName; }		}		public byte[] DecodedAttachment		{			get{ return decodedAttachment; }		}	}	}

Pievienojiet vadīklas faila pielikums un tekstlodziņa vadīklu InfoPath veidlapas

  1. AttachmentEncoding InfoPath veidlapas veidnē noklikšķiniet uz Vadīklas programmā Noformējuma uzdevumus uzdevumu rūtī.
  2. Programmā Vadīklasuzdevumrūti, noklikšķiniet uzFailu Pielikums zemIevietot vadīklas.
  3. Ar peles labo pogu noklikšķiniet uz Faila pielikumu vadīklu, un pēc tam noklikšķiniet uz Faila pielikuma rekvizīti.
  4. Programmā Faila pielikuma rekvizīti dialogu lodziņā ierakstiet theAttachmentField programmā Laukā vārds rūtiņu un pēc tam noklikšķiniet uz labi.
  5. Programmā Vadīklasuzdevumrūti, noklikšķiniet uzTekstlodziņu zemIevietot vadīklas.
  6. Ar peles labo pogu noklikšķiniet uz Tekstlodziņu vadīklu, un pēc tam noklikšķiniet uz Tekstlodziņa rekvizīti.
  7. Programmā Tekstlodziņa rekvizīti dialoglodziņā, tips theAttachmentName programmā Laukā vārds rūtiņu un pēc tam noklikšķiniet uz labi.

Pievienot pogu Pievienot InfoPath veidlapas

  1. Programmā Vadīklasuzdevumrūti, noklikšķiniet uzPoga zemIevietot vadīklas.
  2. Ar peles labo pogu noklikšķiniet uz jaunā Poga vadīklu, un pēc tam noklikšķiniet uz Pogas Rekvizīti.
  3. Programmā Pogas Rekvizīti dialoga lodziņā ierakstietPievienot programmā Etiķete lodziņā ierakstietbtnAttach programmā ID rūtiņu un pēc tam noklikšķiniet uzRediģēt formas kodu.
  4. Pievienot šādu kodu savā btnAttach_OnClick metodi.
    //Get a reference to the attachment node.IXMLDOMNode theAttachmentNode = thisXDocument.DOM.selectSingleNode("my:myFields/my:theAttachmentField");//Get a reference to the filename node.IXMLDOMNode fileNameNode = thisXDocument.DOM.selectSingleNode("my:myFields/my:theAttachmentName");//Get the text of the node.String fileName = fileNameNode.text;if(fileName.Length > 0){	//Encode the file and assign it to the attachment node.	InfoPathAttachmentEncoding.Encoder myEncoder = new InfoPathAttachmentEncoding.Encoder(fileName);	if(theAttachmentNode.attributes.getNamedItem("xsi:nil") != null)		theAttachmentNode.attributes.removeNamedItem("xsi:nil");	theAttachmentNode.text = myEncoder.ToBase64String();}	

Pievienot pogu Saglabāt InfoPath veidlapas

  1. Pārslēdzieties uz AttachmentEncoding InfoPath formas veidni.
  2. Programmā Vadīklasuzdevumrūti, noklikšķiniet uzPoga zemIevietot vadīklas.
  3. Ar peles labo pogu noklikšķiniet uz jaunā Poga vadīklu, un pēc tam noklikšķiniet uz Pogas Rekvizīti.
  4. Programmā Pogas Rekvizīti dialoga lodziņā ierakstietSaglabāt programmā Etiķete lodziņā ierakstietbtnSave programmā ID rūtiņu un pēc tam noklikšķiniet uzRediģēt formas kodu.
  5. Pievienot šādu kodu savā btnSave _OnClick metodi.
    //Get a reference to the attachment node.IXMLDOMNode n = thisXDocument.DOM.selectSingleNode("my:myFields/my:theAttachmentField");//Get the text of the node.String theAttachment = n.text;if(theAttachment.Length > 0){	InfoPathAttachmentEncoding.Decoder myDecoder = new InfoPathAttachmentEncoding.Decoder(theAttachment);	myDecoder.SaveAttachment(@"<Path to save the file>");}			
    Piezīme Šo kodu aizstāj <Path to="" save="" the="" file=""></Path> ar vietu, kur jāsaglabā failu.

Pārliecinieties, ka InfoPath veidlapas veidnē ir pilnīgi uzticamu

Pirms jūs varat pārbaudīt šo veidlapu, InfoPath veidlapas veidnei jābūt pilnīgi uzticamas. Var izmantot vienu no šīm metodēm, lai pārliecinātos, vai InfoPath veidlapas veidnē ir pilnībā uzticams:
  • Izmantot Microsoft.NET Framework 1.1 konfigurēšanas utilīta lai piešķirtu pilnīgas uzticamības atļaujas tikai Visual C# kodu.
  • Izmantojiet utilītu RegForm, no programmas InfoPath Izstrādes komplekta (SDK) lai padarītu veidlapu pilnībā uzticamas veidlapas. Tas piešķir pilnu Uzticamības atļaujas Visual C# kodu.
  • Izmantot, lai digitāli parakstītu veidlapu koda parakstīšanas sertifikāts veidnes fails (. xsn). Izmantojot koda parakstīšanas sertifikāts, lai digitāli parakstītu veidlapas veidnes fails, lietotāji saņem aicinājumu uzticēties formu, atverot formu. Tas padara pilnīgi uzticamas veidlapas. Tādēļ ir pilnīgas uzticamības atļaujas piešķirt Visual C# kodu.
  • Lietošanas IPFullTrust makro no InfoPath SDK, lai pilnīgi uzticamu veidlapu formu. Uz IPFullTrust makro automatizē manifesta (. xsf) faila un veidlapas veidnes failu programmā InfoPath projektu pilnīgu uzticamību, un pēc tam IPFullTrust makro automātiski reģistrē veidlapas veidni.

    Par Plašāku informāciju par to, kā instalēt un izmantot šo makro, apmeklējiet šo Microsoft Developer Network (MSDN) vietni:
  • Izmantot ārējo automatizācija programmā InfoPath, lai izsauktu RegisterSolution metodi. Parasti šo metodi izmanto tikai veidlapu izstrāde jo juridiskā forma tikai reģistros atsevišķos datoros. Jebkuram papildu veidlapu citiem lietotājiem jāreģistrējas papildu veidlapām, par to pašu datoriem. Mēs neiesakām šo metodi attiecībā uz papildu formām. Mēs iesakām kāda no iepriekš minētajām metodēm, publicējot formas.
Tā kā šī forma ir izstrādātas veidlapas, var izmantot pēdējā metode. Lai to izdarītu, atrodiet AttachmentEncoding InfoPath veidlapas veidni, un pēc tam rīkojieties šādi:
  1. Par Rīki izvēlni, noklikšķiniet uz Forma Opcijas.
  2. Noklikšķiniet uz Drošības TAB.
  3. Noklikšķiniet, lai notīrītu Automātiski noteikt drošības līmeni, kas pamatojas uz veidlapas noformējumu (ieteicams) izvēles rūtiņu.

    Piezīme Programma InfoPath nevar automātiski noteikt, biznesa loģiku, kas pieprasa pilnīgas uzticamības atļaujas. Tādēļ ir jāpiešķir tieši pilna Uzticamības atļaujas.
  4. Noklikšķiniet uz Pilnīgas uzticamības, un pēc tam noklikšķiniet uzlabi.
  5. Aizveriet AttachmentEncoding InfoPath veidlapas veidni. Ja tiek piedāvāts saglabāt veiktās izmaiņas, noklikšķiniet uz .

    Piezīme Neaizveriet Visual Studio.NET 2003 projekts.
  6. Visual Studio.NET 2003, veiciet dubultklikšķi uzManifest. xsf Solution Explorer failu. Manifest. xsf failu atver.
  7. Saknes mezglu, atrodiet publishUrl atribūts. Noņemt publishUrl atribūtu un vērtību publishUrl atribūts.
  8. Saglabājiet izmaiņas un pēc tam aizveriet manifest. xsf failu.
  9. Noklikšķiniet uz Sākums, noklikšķiniet uz Palaist, tips Piezīmjbloks, un pēc tam noklikšķiniet uzlabi.
  10. Tukšu teksta failu, pievienot šādu kodu.
    oApp = WScript.CreateObject("InfoPath.ExternalApplication");strAbsolutePath = "<project_folder_url>\\Manifest.xsf";oApp.RegisterSolution(strAbsolutePath,"overwrite"); 
    Piezīme Šo kodu aizstāj<project_folder_url></project_folder_url> ar ceļu Manifest. xsf failu projekta mapē. Atcerēties ceļu bēgt Manifest. xsf failā. Visas vienu atpakaļvērsto slīpsvītru (\) ceļā ir jānomaina ar divas atpakaļvērstās slīpsvītras (\).
  11. Saglabāt datorā kā manifest. xsf failu Register.js failu.
  12. Lai piezvanītu RegisterSolution metodi, veiciet dubultklikšķi uz Register.js fails, kas esat izveidojis.

Pārbaudīt veidlapu

  1. AttachmentEncoding Visual Studio.NET 2003 projekta noklikšķiniet uz Sākums par Atkļūdošanas izvēlne. Tas sākas InfoPath veidlapu priekšskatījuma režīmā.
  2. InfoPath veidlapas, ievadiet faila ceļu, kas pievienojiet tekstlodziņu un pēc tam noklikšķiniet uzPievienot.

    Piezīme Veiciet dubultklikšķi uz Faila pielikumu vadīklu, lai Pārbaudiet, vai fails ir pareizi kodēta.
  3. Noklikšķiniet uz Saglabāt. Atrodiet ceļu, kuru sniegta "pievienot Saglabāt pogas InfoPath veidlapas" sadaļā.
  4. Lai beigtu testēšanu, noklikšķiniet uz Aizveriet Priekšskatījums.
UZZIŅAS
Plašāku informāciju par faila pielikuma virsraksta formātā, apmeklējiet šo MSDN Web vietu:
IP2003

Brīdinājums: šis raksts ir tulkots automātiski

Rekvizīti

Raksta ID: 892730. Pēdējo reizi pārskatīts: 03/05/2012 17:02:00. Pārskatījums: 0.1

Microsoft Office InfoPath 2003

  • kbcode kbscript kbsample kbxml kbprogramming kbhowto kbmt KB892730 KbMtlv
Atsauksmes