修改网络映射磁盘的方法

      相信很多人都一直希望能够修改网络映射磁盘的Lable,但伤心的是使用SetVolumValue不可用,其仅适用于本地磁盘的Label修改。

 

      修改网络磁盘的方法可以采用注册表的形式,这里该方法就不拿来说明,网上很容易找到的。

 

      这里提供一种采用COM 的API方式来修改:

     

void RenameDrive(BSTR strNewName, BSTR strDriveLetter)
{
   IShellDispatch* pShellDispatch = NULL;

   if ( SUCCEEDED( CoInitialize(NULL) ) )
   {
	   // 如果成功初始化COM库,则继续初始化并运行应用程序...
	   // 对于Win32应用程序, CoInitialize函数的pvReserved参数,必须为NULL. 此参数不能被用于32位COM,      
	   // CoInitialize将会返回E_INVALIDARG,如果传递一个非NULL参数.
   }
   else
   {
	   // 如果初始化COM库失败,则退出.
   }

   HRESULT hr = CoCreateInstance(CLSID_Shell,
                                 NULL,
                                 CLSCTX_INPROC_SERVER,
                                 IID_IShellDispatch,
                                 (void**)&pShellDispatch);
   if (SUCCEEDED(hr) && pShellDispatch)
   {
      Folder* pFolder = NULL;
      VARIANT vt = {};
      VariantInit(&vt);
      vt.vt = VT_BSTR;
      vt.bstrVal = strDriveLetter;
      hr = pShellDispatch->NameSpace(vt, &pFolder);
      VariantClear(&vt);
      if (SUCCEEDED(hr) && pFolder)
      {
         Folder2* pFolder2 = NULL;
         hr = pFolder->QueryInterface(IID_Folder2, (void**)&pFolder2);
         if (SUCCEEDED(hr) && pFolder2)
         {
            FolderItem* pFolderItem = NULL;
            hr = pFolder2->get_Self(&pFolderItem);
            if (SUCCEEDED(hr) && pFolderItem)
            {
               pFolderItem->put_Name(strNewName);
               pFolderItem->Release();
            }
            pFolder2->Release();
         }

         pFolder->Release();
      }

      pShellDispatch->Release();

	  CoUninitialize();
   }
}

 

    测试代码:

   

int _tmain(int argc, _TCHAR* argv[])
{
	BSTR bstrLabel = ::SysAllocString( L"TestLabel" );

	if (bstrLabel == NULL)

		return E_OUTOFMEMORY;

	BSTR bstrLetter = ::SysAllocString( L"Z:" );

	if (bstrLetter == NULL)

		return E_OUTOFMEMORY;

	RenameDrive(bstrLabel, bstrLetter);

	::SysFreeString( bstrLabel );
	::SysFreeString( bstrLetter );
	return 0;
}

    

   OK

   转载请注明出处:

   http://yiranwuqing.iteye.com/blog/1825349

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LeNet神经网络是一个简单的卷积神经网络,可以用于手写数字识别。下面是编写LeNet神经网络的步骤: 1. 导入必要的库:需要导入PyTorch、NumPy等库。 2. 定义网络结构:LeNet包括两个卷积层、两个池化层和两个全连接层。 3. 初始化模型参数:需要对每一层的权重和偏置进行初始化。 4. 定义损失函数和优化器:通常使用交叉熵损失函数,并使用随机梯度下降(SGD)或其他优化器来最小化损失函数。 5. 训练网络:通过不断迭代训练数据和更新模型参数来训练网络。 6. 测试网络:使用测试数据评估模型的性能。 7. 保存模型:将训练好的模型保存到磁盘以便以后使用。 这些是编写LeNet神经网络的基本步骤,您还可以通过添加额外的层或修改模型参数来提高模型的性能。 ### 回答2: LeNet是一种经典的卷积神经网络,最初由Yann LeCun等人于1998年提出用于手写数字识别。下面将介绍如何编写LeNet神经网络。 1. 数据准备:首先,我们需要准备用于训练和测试的数据集。可以使用MNIST数据集,其中包含手写数字的图像和相应的标签。 2. 数据预处理:对于LeNet网络,我们需要将图像数据进行预处理,以便网络能够更好地学习。常见的预处理步骤包括将图像转为灰度图、归一化像素值等。 3. 模型架构定义:在编写LeNet网络之前,需要确定网络的架构。典型的LeNet架构包括两个卷积层、两个池化层和三个全连接层。可以使用深度学习框架(如TensorFlow、PyTorch等)来定义网络架构。 4. 前向传播:编写前向传播函数以将输入图像通过网络进行传递。在LeNet中,输入图像首先通过卷积层进行特征提取,再经过池化层进行下采样。最后,通过全连接层将特征映射到对应的类别上。 5. 反向传播:编写反向传播函数以计算网络的梯度并更新参数。可以使用梯度下降优化算法(如SGD、Adam等)来优化网络。 6. 训练和测试:使用训练数据对网络进行训练,并使用测试数据对网络进行评估。可以设置适当的超参数(学习率、批大小等)来优化网络的性能。通过迭代训练和测试过程,可以不断优化网络以提高准确率。 总结来说,编写LeNet神经网络需要进行数据准备、数据预处理、模型架构定义、前向传播、反向传播以及训练和测试等步骤。随着深度学习框架的发展,编写LeNet网络相对较为简单,只需按照网络架构和流程进行编码即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值