小编gyr*_*olf的帖子

连接到网络共享时如何提供用户名和密码

当连接到当前用户(在我的情况下,支持网络的服务用户)没有权限的网络共享时,必须提供名称和密码.

我知道如何使用Win32函数(WNet*来自的家族mpr.dll),但是想用.Net(2.0)功能.

有哪些选择?

也许更多信息有助于:

  • 用例是Windows服务,而不是Asp.Net应用程序.
  • 该服务在没有共享权限的帐户下运行.
  • 客户端不知道共享所需的用户帐户.
  • 客户端和服务器不是同一域的成员.

.net c# passwords networking winapi

178
推荐指数
7
解决办法
25万
查看次数

如何正确取消注册事件处理程序

在代码审查中,我偶然发现了这个(简化的)代码片段以取消注册事件处理程序:

 Fire -= new MyDelegate(OnFire);
Run Code Online (Sandbox Code Playgroud)

我认为这不会取消注册事件处理程序,因为它创建了一个之前从未注册过的新委托.但是搜索MSDN我发现了几个使用这个习惯用法的代码示例.

所以我开始了一个实验:

internal class Program
{
    public delegate void MyDelegate(string msg);
    public static event MyDelegate Fire;

    private static void Main(string[] args)
    {
        Fire += new MyDelegate(OnFire);
        Fire += new MyDelegate(OnFire);
        Fire("Hello 1");
        Fire -= new MyDelegate(OnFire);
        Fire("Hello 2");
        Fire -= new MyDelegate(OnFire);
        Fire("Hello 3");
    }

    private static void OnFire(string msg)
    {
        Console.WriteLine("OnFire: {0}", msg);
    }

}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,发生了以下情况:

  1. Fire("Hello 1"); 按预期产生了两条消息.
  2. Fire("Hello 2");制作了一条消息!
    这使我确信取消注册的new代表工作!
  3. Fire("Hello 3");扔了一个NullReferenceException.
    调试代码显示Firenull …

.net c# events delegates

64
推荐指数
2
解决办法
5万
查看次数

引用COM对象ActiveDs或MSXML2时有很多构建警告

将项目从.NET 1.1移动到.NET 2.0后,MsBuild会为某些COM对象发出大量警告.

测试的示例代码(实际代码无关紧要,仅用于创建警告):

using System;
using System.DirectoryServices;
using ActiveDs;
namespace Test
{
    public class Class1
    {
        public static void Main(string[] args)
        {
            string adsPath = String.Format("WinNT://{0}/{1}", args[0], args[1]);
            DirectoryEntry localuser = new DirectoryEntry(adsPath);
            IADsUser pUser = (IADsUser) localuser.NativeObject;
            Console.WriteLine("User = {0}", pUser.ADsPath);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

警告消息看起来像

C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets:警告:运行时封送程序无法对"ITypeLib.RemoteGetLibAttr"的至少一个参数进行封送处理.因此,这些参数将作为指针传递,并且可能需要操作不安全的代码.

观察:

  • 发生ActiveDs(11个警告)和MSXML2(54个警告).
  • 没有看到我们自己的COM对象.
  • <Reference> .csproj文件中的条目包含属性 WrapperTool = "tlbimp"
  • 尽管有所有警告,但在运行系统中没有发现任何问题.

知道怎么摆脱警告吗?

.net msbuild com-interop tlbimp

12
推荐指数
2
解决办法
7541
查看次数

Windows是否为应用程序提供单调增加的时钟

这个问题的灵感来自于Linux是否为应用程序提供了单调递增的时钟.

也许我应该更精确:我正在寻找一个严格增加的时钟功能,因此永远不会返回相同的值,独立于两个呼叫相互跟随的速度.

windows time timer

11
推荐指数
1
解决办法
5279
查看次数

寻找具有尽可能少的比较操作的排序算法

我想对人类进行比较的项目进行排序:

  • 图片
  • 工作项目的优先顺序
  • ...

对于这些任务,比较次数是性能的限制因素.

  • 什么是需要比较的最小数量(我假设> ññ项目)?
  • 哪种算法保证这个最小数量?

sorting algorithm

11
推荐指数
4
解决办法
2775
查看次数

具有相同名称但根据上下文具有不同子结构的元素的XML模式

我尝试为我收到的XML文档定义一个模式.

文件看起来像:

<root>
    <items>
        <group name="G-1">
            <item name="I-1"/>
            <item name="I-2"/>
            <item name="I-3"/>
            <item name="I-4"/>
        </group>
    </items>
    <data>
        <group name="G-1" place="here">
            <customer name="C-1">
                <item name="I-1" count="3"/>
                <item name="I-2" count="4"/>
            </customer>
            <customer name="C-2">
                <item name="I-3" count="7"/>
            </customer>
        </group>
    </data>
</root>
Run Code Online (Sandbox Code Playgroud)

我试过.NET 2.0中的XmlSpy和xsd.exe.两者都创建了允许在<group>任意数量<item><customer>元素下面的模式定义.但是我正在寻找应限制<group>以下<items>,以<item>元素,<group>下面<data><customer>元素.

这是xml架构根本不具备的吗?

xsd

6
推荐指数
2
解决办法
2万
查看次数

如何强制Internet Explorer使用元标记中给出的编码?

我正在尝试准备一个混合英语和阿拉伯语内容的演示html页面.基本上它包含一个小表,左边是英文短语,右边是阿拉伯语翻译.

因为我不懂阿拉伯语,所以我从Unicode参考中获取了阿拉伯字母的前三个字符.

第一次尝试,使用字符实体(ابت):它工作(显示:ابت).

我试图直接在文档中输入阿拉伯字符.为了实现这一点,我将文档保存为UTF-8并添加了内容类型的元标记.

在Internet Explorer(7)中显示此文档显示垃圾:ابت

手动切换IE以使用UTF-8(菜单"视图 - >视图 - > Unicode")使IE显示字符correclty.但是一旦文档重新加载,垃圾就会再次出现.

<html>
  <head>
  <meta content="content-type" content="text/html; charset=utf-8">
  </head>
  <body>
    <table width="95%" border="1">
      <colgroup><col width="50%" /><col width="50%" /></colgroup>
      <tbody>
        <tr>
          <th>English</th><th>Arabic</th>
        </tr>
        <tr>
          <td>Test phrase</td>
          <td dir="rtl">? ? ?</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用Firefox测试显示正确的阿拉伯字母.(但是对"rtl"方向的解释是不同的:IE显示文本右对齐,Firefox左对齐.)

任何提示如何说服IE使用文档中给出的编码?

这是本地存储的html文件的效果吗?编辑此StackOverflow条目时,我会观察

  • 阿拉伯字符按预期呈现,
  • 菜单中的编码自动切换为"Unicode(UTF-8)",
  • 并且html的源代码不包含内容类型的元标记.

unicode internet-explorer utf-8 character-encoding internet-explorer-7

3
推荐指数
1
解决办法
8284
查看次数