I/o ??? ????? ?????? Visual C++ ?? Visual C++ .NET ??? ??? ???? ?? ??? ????

???? ?????? ???? ??????
???? ID: 307398 - ?? ???????? ?? ?????? ??? ?? ?? ???? ???? ???? ??.
?? Microsoft Visual C++ .NET 2005/2008 ECMA C+ ?? ??? + / CLI ??????? ?? ???? ?? ????? 950617.
?? Microsoft Visual c# .NET ??????? ?? ??? ????, ????? 304430.
?? ??? ?? Microsoft Visual ?? ??? ?? ??? .NET ??????? ????? 304427.
?? ???? ?? ???????? ???? ?? ????? Microsoft .NET ????????? ????? ????????? ????????:
  • System::ComponentModel
  • System::Windows::Forms
  • System::Drawing
??? ?? ??????? ???? | ??? ?? ??????? ????

?? ????? ??

??????

?? ??? ?? ??? ???? ????? ?? ?? ?? basic ???? ?? ??? ???? ????? ?????/?????? (i/o) ???????? Microsoft Visual C++ 2005 ?? Microsoft Visual C++ .NET. ??? ?? .NET Framework ?? ??? ?? ???, ?? ?????? ?? .NET Framework ??? ????? ???????? ?? ??? ???????? ???? ?? ???? ?? ?? Microsoft Visual Studio 6.0 ???????? ?? ??? ???????? ?? FileSystemObject (FSO)? ???? ?? ??? ??????? ????, ??? ?? ????? ??, ?? ??????????? ????? ???? ????? Microsoft ???????? ???? ?? ?????? ??:
186118 FileSystemObject ?? ??? ????? ???? ?? ??? ???? Visual Basic
???? .NET Framework ??? FileSystemObject ??? ?? ????? ?? ???? ???? ??????? FileSystemObject ??? ??? ???????? ???? (COM) ??? ??, .NET ????????? ?? ?????? ???????? ?? ????? ?????? ?????? ??? ??? .NET Framework ?? ??? ??? ???? ????? ???? ?? ??? ?? ????? ???? ????? ???, ?? ?? ?? ??? ??? ???????, ???? ????? , FileInfo ????, ??????????, DirectoryInfo ??????? ?? ???? ??????? ??????? .NET Framework ??? ??? ??????????? ?? ??????? ?? ????, FSO ?? ??? ?????? ???? ?? ?????? ????

??????????

????? ???? ???????? ?????????, ?????????? ???? ??????? ???? ??, ??????? ???? ??????, ?? ?????? ????? ?????? ???:
  • ????? C++ .NET ?? visual C++ 2005

Demonstrated ????? i/o ????????

?? ???? ??? ?????? ??? ????? i/o ???????? ?? ????? ????? "Step-by-Step ??????" ??? ????? ?? ?? ?? ????? ????????? ?? ????? ?? ??? ???? ????????? ???? ?? ?? ????? ?? ????? i/o ???????? ??:
  • ???? ??? ????? ?? ?????
  • ???? ??? ????? ?????
  • ????? ????? ???????
  • ???? ????? ??????
  • ??????? ????
  • ???? ???????

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

????? ????? ??? ?? ??? ????? ?? ????? ?? ??? ??? StreamReader ???? ?? ????? ???? ??? ????? ?? ??????? ??? ??? ???? ????? ???????? ???? ?? ??? ????? ??? ??????... catch ????? ????????? ????? ????? ??, ?? ??????? ??? ???? ?? ??? ????? ???? ???? ??? ???? ?? ????? ?? ??? ?? ????? ??? ??, ?? ?? ????????? ???? ?? ??? ?? ????? ???; ?? ????? ??? ????? ?? ???? ???? ?????? ?? ??????? ???? ?? ??? ??? ???? ?? ????? ???? ???
  listBox1->Items->Clear();
   	try   
	{    
		String* textFile = String::Concat(windir,                                    (S"\\mytest.txt")); 
	        StreamReader *reader=new  StreamReader(textFile);
		do
		{
		    listBox1->Items->Add(reader->ReadLine());
		}   
		while(reader->Peek() != -1);
	}      
         
	catch (System::Exception *e)
	{ 
		listBox1->Items->Add(e);
	}

}
				
??? ????? C++ 2005 ???, ?? ???????? C++ ?? ??? ??? ????? ??? ????? ?? ??????????? ?????? ???? ?? ??? ??????? ???? ?????? ?????? ??????? ?????? (/clr:oldSyntax) ?? ?????? ????? ??????? ???? ?????? ?????? ??????? ?????? ?????? ?? ???, ????? ????? ?? ???? ????:
  1. ????? ?????????, ?? ???? ??? ????? ????ProjectName ???.

    ???ProjectName ????????? ?? ??? ?? ??? ??????????? ???
  2. ??????? ???? ???????????? ???, ?? ???? ??? ????? ???????????.
  3. ???? ??? ???, ????? ?? ??? ????? ???? ??????? ???? ?????? ??????, ?????? ???????? (/ clr:oldSyntax) ?????????? ???? ?????? ?????? ????????? ?????????
  4. ????????? ????, ?? ???? ??? ????? ???? ???.
??????? ???? ?????? ?????? ??????? ???????? ?? ???? ??? ???? ??????? ?? ???, ????? Microsoft ?????? ??????? (MSDN) ??? ???? ?? ????:
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

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

?? ????? ??? ???? StreamWriter ???? ????? ?? ???? ????? ?? ????? ?? ??? ????? ???? ??? ??? ???? ??? ?? ?????? ?????, ?? ??? ??? ?????? ??? ??? ???? ????
StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");
pwriter->WriteLine(S"File created using StreamWriter class.");
pwriter->Close();
listBox1->Items->Clear();
String *filew = new String(S"File Written to C:\\KBTest.txt");
listBox1->Items->Add(filew);
				

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

?? ????? ??? ???? FileInfo ???? ????? ?? ????? ?? ??????? ?? ??? ????? ???? ??? Notepad.exe ??? ???? ????? ???? ???? ?? ????? ??? ??? ???? ????? ???????? ??? ??? ????? ???? ????
 listBox1->Items->Clear();
 String* testfile = String::Concat(windir, (S"\\notepad.exe")); 
 FileInfo *pFileProps  =new FileInfo(testfile);

 listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) );
 listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) );
 listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) );
 listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) );
 listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );
				

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

?? ????? ??? ??????? ???????? ?? ?????? ?? ???????? ???? ?? ??? ?????????? ?? ?????? ??????? ?? ????? ???? ??? ?? ????? ?? ???, ??? ???? ????? ???????? ??? ?????? ????? ???? ????
  listBox1->Items->Clear();
  String* drives[] = Directory::GetLogicalDrives();
  int numDrives = drives->get_Length();
  for (int i=0; i<numDrives; i++)
  {
	listBox1->Items->Add(drives[i]);
  } 
				

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

????????? ?? ???? ??????? ???? ?? ??? ?? ????? ??? GetDirectories ?? ??? ???? ?????????? ???? ?? ????? ???? ???
listBox1->Items->Clear();
String* dirs[] = Directory::GetDirectories(windir);
int numDirs = dirs->get_Length();
for (int i=0; i<numDirs; i++)
{
listBox1->Items->Add(dirs[i]);
}
				

???? ???????

??????? ?? ???? ??????? ???? ?? ??? ?? ????? ??? GetFiles ?? ??? ???? ?????????? ???? ?? ????? ???? ???
listBox1->Items->Clear();
String* files[]= Directory::GetFiles(this->windir);
int numFiles = files->get_Length();
for (int i=0; i<numFiles; i++)
{
  listBox1->Items->Add(files[i]);
}
				
?? ????? ??? ?? ???? ??? ?? ??? ?????????? gains ??????? ?? ?????? ??????? ????? ???? ?? ???? ??, ??????? ????? ??? ?? ???? ??, ?? ?????????? ?? ???? ?? ???? ?? ?? ?????? ?? ?? ??????? ?? ??? ?????? ?? ??? ??? ?? ??????? ?? ??????? ???? ????? ???? ?? ????????? ?? ?? ???? ?? ?? ????? ?? ????? ???? ?? ??? ??? ????? ????? ???

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

  1. Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 ?? Microsoft Visual C++ 2005 ????????? ??????? ??????? ?????
  2. ?? ????? ????, ????? ???? ?? ??????, ?? ???? ??? ????? ???? ?????????.
  3. ?? ??????? ????????? ??????, ????? ????????? C++ ???????????. ?? ??????? ?????????? ??????, ????? ????Windows ??????? ????????? (.NET).

    ??? Visual Studio 2005 ???, ????? ????????? C++ ?? ??????? ????????? ??????. ?? ??????? ??????????, ????? ????Windows ??????? ?????????.
  4. ?????? KB307398 ?????? ????? ???, ?????? C:\ ???????? ????? ???, ?? ???? ??? ????? ???????.
  5. ??????? ??? Form1 ??????? ????? ?????, ?? ???? ??? ????? ?? ??? F4 ????? Propertries ??????
  6. ??? ????? ???, ??????? ???? ???????????? ??? ?????? ????? ???, ?????? 700. ??? ????? ????? ???, ??????320.
  7. ?? ?????? ???? ????? ???????? ?? ???????? Form1 ?? ??? ?????????

    ??? ????? ????? ?? ????? ?? ??? ????? ???? ????? ????? ?? ????? ?????
  8. ??? ????? ???, ????????? ?????????, ???, ????,TabIndex, ?? ??? ?? ?? ??? ??????????? ????????:
    ?? ?????? ?? ??????? ?????? ?????? ?? ??????? ????
    ???????? ID????????????TabIndex???
    button1500, 32button1112, 231??? ????? ?????
    button2500, 64button2112, 232??? ????? ?????
    button3500, 96button3112, 233????? ????? ???????
    button4500, 128button4112, 234???? ??????
    button5500, 160button5112, 235???? ?????????
    button6500, 192button6112, 236???? ???????
    listBox124, 24listBox1450, 2000listBox1
  9. Form1.h ????? ?????? Form1 ???? ????? ???, ????? ?? ???? ???????? ?? ????? ??? ?? ???:
    private:
    		String *windir;
  10. Form1 ???? ???????? ??? ????? ??? ??????:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. ????? ????? ?????? ???????? ?? ???? ?? ???, System::IO ??????. ??? ??????
  12. ??? Form1 ????? ?? ??? SHIFT + F7 ????? ??????? ?????? ??? ????? ????? ?? ??? ??? ???-????? ????, ?? ???? ??? ????? ??? ???????:

    ??? ????? C++ 2005 ???, ????? ???? ???????? ??? ????? ?????
    // How to read a text file:
    // Use try...catch to deal with a 0 byte file or a non-existant file.
    listBox1->Items->Clear();
    
    try   
    {    
    	String* textFile = String::Concat(windir, (S"\\mytest.txt")); 
    	StreamReader *reader=new  StreamReader(textFile);
    	do
    	{
    	listBox1->Items->Add(reader->ReadLine());
    	}   
    	while(reader->Peek() != -1);
    }    
    catch(FileNotFoundException *ex)
    {
    	listBox1->Items->Add(ex);
    }  
            
    catch (System::Exception *e)
    { 
    	listBox1->Items->Add(e);
    }
  13. Form1 ??????? ????? ???, ??? ????? ????? ?? ??? ??? ???-????? ????, ?? ???? ??? ????? ??? ???????:
    // This demonstrates how to create and to write to a text file.
    StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");
    pwriter->WriteLine(S"The file was created by using the StreamWriter class.");
    pwriter->Close();
    listBox1->Items->Clear();
    String *filew = new String(S"File written to C:\\KBTest.txt");
    listBox1->Items->Add(filew);
  14. Form1 ??????? ?????, ??? ????? ??????? ????? ??? ???-????? ????, ?? ???? ??? ?????? ??? ????? ??? ???????:
    // This code retrieves file properties. The example uses Notepad.exe.
    listBox1->Items->Clear();
    String* testfile = String::Concat(windir, (S"\\notepad.exe")); 
    FileInfo *pFileProps  =new FileInfo(testfile);
    
    listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) );
    listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) );
    listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) );
    listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) );
    listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );
  15. Form1 ??????? ????? ???, ?????? ???? ??? ???-????? ????, ?? ???? ??? ????? ??? ???????:
    // This demonstrates how to obtain a list of disk drives.
    listBox1->Items->Clear();
    String* drives[] = Directory::GetLogicalDrives();
    int numDrives = drives->get_Length();
    for (int i=0; i<numDrives; i++)
    {
    	listBox1->Items->Add(drives[i]);
    }
  16. Form1 ??????? ????? ??? ???? ??-????????? ??? ???-????? ????, ?? ???? ??? ????? ??? ???????:
    // This code obtains a list of folders. This example uses the Windows folder.
    listBox1->Items->Clear();
    String* dirs[] = Directory::GetDirectories(windir);
    int numDirs = dirs->get_Length();
    for (int i=0; i<numDirs; i++)
    {
    	listBox1->Items->Add(dirs[i]);                                                    
    }
  17. Form1 ??????? ????? ??? ???? ??????? ??? ???-????? ????, ?? ???? ??? ????? ??? ???????:
    // This code obtains a list of files. This example uses the Windows folder.
    listBox1->Items->Clear();
    String* files[]= Directory::GetFiles(this->windir);
    int numFiles = files->get_Length();
    for (int i=0; i<numFiles; i++)
    {
    	listBox1->Items->Add(files[i]);
    }
  18. ?????, ?? ???? ??? ????????? ?? ????? ?? ??? CTRL + F5 ??????

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

??? Visual C++ 2005 ??? ??? ???? ???, ?? ????? ??? ????? ?????? ???
//Form1.h
#pragma once


namespace KB307398
{
	using namespace System;
	using namespace System::IO;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary> 
	/// Summary for Form1
	///
	/// WARNING: If you change the name of this class, you will need to change the 
	///          'Resource File Name' property for the managed resource compiler tool 
	///          associated with all .resx files this class depends on.  Otherwise,
	///          the designers will not be able to interact properly with localized
	///          resources associated with this form.
	/// </summary>
	public __gc class Form1 : public System::Windows::Forms::Form
	{
	private:
		String *windir;
	public:
		Form1(void)
		{
			windir = System::Environment::GetEnvironmentVariable("windir");
			InitializeComponent();
		}
  
	protected:
		void Dispose(Boolean disposing)
		{
			if (disposing && components)
			{
				components->Dispose();
			}
			__super::Dispose(disposing);
		}
	private: System::Windows::Forms::Button *  button1;
	private: System::Windows::Forms::Button *  button2;
	private: System::Windows::Forms::Button *  button3;
	private: System::Windows::Forms::Button *  button4;
	private: System::Windows::Forms::Button *  button5;
	private: System::Windows::Forms::Button *  button6;
	private: System::Windows::Forms::ListBox *  listBox1;

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>
		System::ComponentModel::Container * components;

		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = new System::Windows::Forms::Button();
			this->button2 = new System::Windows::Forms::Button();
			this->button3 = new System::Windows::Forms::Button();
			this->button4 = new System::Windows::Forms::Button();
			this->button5 = new System::Windows::Forms::Button();
			this->button6 = new System::Windows::Forms::Button();
			this->listBox1 = new System::Windows::Forms::ListBox();
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(500, 32);
			this->button1->Name = S"button1";
			this->button1->Size = System::Drawing::Size(112, 23);
			this->button1->TabIndex = 1;
			this->button1->Text = S"Read Text File";
			this->button1->Click += new System::EventHandler(this, button1_Click);
			// 
			// button2
			// 
			this->button2->Location = System::Drawing::Point(500, 64);
			this->button2->Name = S"button2";
			this->button2->Size = System::Drawing::Size(112, 23);
			this->button2->TabIndex = 2;
			this->button2->Text = S"Write Text File";
			this->button2->Click += new System::EventHandler(this, button2_Click);
			// 
			// button3
			// 
			this->button3->Location = System::Drawing::Point(500, 96);
			this->button3->Name = S"button3";
			this->button3->Size = System::Drawing::Size(112, 23);
			this->button3->TabIndex = 3;
			this->button3->Text = S"View File Information";
			this->button3->Click += new System::EventHandler(this, button3_Click);
			// 
			// button4
			// 
			this->button4->Location = System::Drawing::Point(500, 128);
			this->button4->Name = S"button4";
			this->button4->Size = System::Drawing::Size(112, 23);
			this->button4->TabIndex = 4;
			this->button4->Text = S"List Drives";
			this->button4->Click += new System::EventHandler(this, button4_Click);
			// 
			// button5
			// 
			this->button5->Location = System::Drawing::Point(500, 160);
			this->button5->Name = S"button5";
			this->button5->Size = System::Drawing::Size(112, 23);
			this->button5->TabIndex = 5;
			this->button5->Text = S"List Subfolders";
			this->button5->Click += new System::EventHandler(this, button5_Click);
			// 
			// button6
			// 
			this->button6->Location = System::Drawing::Point(500, 188);
			this->button6->Name = S"button6";
			this->button6->Size = System::Drawing::Size(112, 23);
			this->button6->TabIndex = 6;
			this->button6->Text = S"List Files";
			this->button6->Click += new System::EventHandler(this, button6_Click);
			// 
			// listBox1
			// 
			this->listBox1->Location = System::Drawing::Point(24, 24);
			this->listBox1->Name = S"listBox1";
			this->listBox1->Size = System::Drawing::Size(450, 199);
			this->listBox1->TabIndex = 0;
			// 
			// Form1
			// 
			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
			this->ClientSize = System::Drawing::Size(692, 293);
			this->Controls->Add(this->listBox1);
			this->Controls->Add(this->button6);
			this->Controls->Add(this->button5);
			this->Controls->Add(this->button4);
			this->Controls->Add(this->button3);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button1);
			this->Name = S"Form1";
			this->Text = S"Form1";
			this->ResumeLayout(false);

		}	
	private: System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)
			 {// This code shows how to read a text file.
// The try...catch code is to deal with a 0 byte file or a non-existant file.
listBox1->Items->Clear();

				try   
				{    
					String* textFile = String::Concat(windir, (S"\\mytest.txt")); 
					StreamReader *reader=new  StreamReader(textFile);
					do
					{
					listBox1->Items->Add(reader->ReadLine());
					}   
					while(reader->Peek() != -1);
				} 
				catch(FileNotFoundException *ex)
				{
					listBox1->Items->Add(ex);
				}	     
				        
				catch (System::Exception *e)
				{ 
					listBox1->Items->Add(e);
				}
			 }

private: System::Void button2_Click(System::Object *  sender, System::EventArgs *  e)
		 {// This code demonstrates how to create and to write to a text file.
StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");
pwriter->WriteLine(S"The file was created by using the StreamWriter class.");
pwriter->Close();
listBox1->Items->Clear();
String *filew = new String(S"The file was written to C:\\KBTest.txt");
listBox1->Items->Add(filew);
		 }

private: System::Void button3_Click(System::Object *  sender, System::EventArgs *  e)
		 {// This code retrieves file properties. This example uses Notepad.exe.
listBox1->Items->Clear();
String* testfile = String::Concat(windir, (S"\\notepad.exe")); 
FileInfo *pFileProps  =new FileInfo(testfile);

listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) );
listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) );
listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) );
listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) );
listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );
		 }

private: System::Void button4_Click(System::Object *  sender, System::EventArgs *  e)
		 {// The code demonstrates how to obtain a list of disk drives.
listBox1->Items->Clear();
String* drives[] = Directory::GetLogicalDrives();
int numDrives = drives->get_Length();
for (int i=0; i<numDrives; i++)
{
	listBox1->Items->Add(drives[i]);
}
		 }

private: System::Void button5_Click(System::Object *  sender, System::EventArgs *  e)
		 {// This code obtains a list of folders. This example uses the Windows folder.
listBox1->Items->Clear();
String* dirs[] = Directory::GetDirectories(windir);
int numDirs = dirs->get_Length();
for (int i=0; i<numDirs; i++)
{
	listBox1->Items->Add(dirs[i]);                                                    
}
		 }

private: System::Void button6_Click(System::Object *  sender, System::EventArgs *  e)
		 {// This code obtains a list of files. This example uses the Windows folder.
listBox1->Items->Clear();
String* files[]= Directory::GetFiles(this->windir);
int numFiles = files->get_Length();
for (int i=0; i<numFiles; i++)
{
	listBox1->Items->Add(files[i]);
}
		 }

};
}

//Form1.cpp
#include "stdafx.h"
#include "Form1.h"
#include <windows.h>

using namespace KB307398;

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
	Application::Run(new Form1());
	return 0;
}

??????

???? ??????? ?? ???, ????? Microsoft ??? ???? ?? ????:
http://support.microsoft.com/default.aspx?xmlid=fh;EN-US; vcnet
Windows ??????? ????? ??? ???????? ???? ?? ????? ?? ???? ??? ???? ??????? ?? ??? "ManagedCWinFormWiz" ????? Visual Studio .NET ??? C++, ?? ??? ????????? ????? ??? ?????

???

???? ID: 307398 - ????? ???????: 28 ??? 2013 - ??????: 3.0
???? ???? ???? ??:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
??????: 
kbwindowsforms kbforms kbio kbfileio kbhowtomaster kbnewsgrouplink kbmt KB307398 KbMthi
???? ?????? ????????
??????????: ?? ???? ?? ???? ??????? ?? ????? ?? Microsoft ????-?????? ?????????? ?????? ?????? ???? ??? ??. Microsoft ???? ??? ????-???????? ?? ????-???????? ????? ?????? ?? ???? ???????? ???? ?? ???? ????? ????? ??? ?? ??? ?????? ?? ???? ???? ???? ??? ????? ??. ???????, ????-???????? ???? ????? ???? ???? ???? ???. ?????, ????????, ?????-???? ?? ??????? ?? ???????? ?? ???? ???, ???? ?? ??? ?????? ???? ???? ??? ????? ??? ?? ???? ??. Microsoft ??????? ??? ???? ?? ?????? ?? ??????????, ????????? ?? ??? ?????? ?? ???? ????? ?? ???? ???????? ?? ??? ???? ????? ?? ??? ????????? ???? ??. Microsoft ????-?????? ?????????? ?? ????? ?????? ?? ?? ??? ??.
?????????? ?? ??????? ????????? ??????? ??:307398

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

 

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