小编Phi*_*hil的帖子

在网络服务帐户下访问 Windows 共享

我有两台装有 Windows Server 2003 的计算机。一台计算机在网络上有一些共享文件夹,另一台计算机有一个 Windows 服务(用 C# 编写,在网络服务帐户下运行)需要访问这些共享文件夹。

以下代码作为登录用户工作正常,但在网络服务帐户下执行时会引发异常。

File.WriteAllText(@"C:\temp\temp.txt", File.ReadAllLines(@"\\NetworkServer\Test\test.txt")[0]);
Run Code Online (Sandbox Code Playgroud)

异常消息是Logon failure: unknown user name or bad password。如何让此代码在网络服务帐户下工作?它是 Windows Server 2003 中的一个设置,还是我需要为此添加一些代码才能使其工作?

c# windows-services credentials windows-share network-share

5
推荐指数
1
解决办法
6453
查看次数

在 .NET 应用程序中使用 RegisterDeviceNotification

我已经看到了一些关于如何从 Windows API 使用 RegisterDeviceNotification 的示例,但我还没有看到任何 .NET 示例。我想编写一个 C# 应用程序,当出现新驱动器时会收到通知(特别是通过 USB、火线等)。这个应用程序需要是一个 Windows 服务,所以我不能使用 WM_DEVICECHANGE 消息而没有一些不良实践黑客。我想避免这种情况。谁能给我一个如何在 C# 中使用 RegisterDeviceNotification 的示例,或者至少给我一个很好的替代方案?

编辑:同样,这是一个没有图形用户界面的 Windows服务。因此,在这种情况下,涉及 WM 通知消息的可能重复项将不起作用。

.net usb winapi notifications windows-services

5
推荐指数
1
解决办法
6862
查看次数

做性能记录的好方法(C#)

我试图从我公司正在开发的应用程序中获取一些详细的性能信息.我想要获得的信息示例包括网络事务需要多长时间,应用程序使用多少CPU /内存,给定方法完成所需的时间等.

我过去曾尝试过一些失败的尝试(比如尝试使用DateTime.Now来测量小时间段).最重要的是,我对获取CPU和内存统计信息知之甚少.是否有任何好的.Net类,库或框架可以帮助我收集这类信息和/或将其记录到文本文件中?

c# performance logging frameworks

5
推荐指数
1
解决办法
4332
查看次数

智能拼写检查

我正在使用NHunspell检查字符串是否存在拼写错误,如下所示:

var words = content.Split(' ');
string[] incorrect;
using (var spellChecker = new Hunspell(affixFile, dictionaryFile))
{
    incorrect = words.Where(x => !spellChecker.Spell(x))
        .ToArray();
}
Run Code Online (Sandbox Code Playgroud)

这通常有效,但它有一些问题.例如,如果我检查了一句"这是一个(非常好)榜样",它会报告"(非常"和"好)"为被拼错.或者,如果字符串包含诸如"8:30"之类的时间,则会将其报告为拼写错误的单词.它也有逗号等问题.

Microsoft Word非常智能,可以识别时间,分数或逗号分隔的单词列表.它知道何时不使用英语词典,它知道何时忽略符号.如何在我的软件中获得类似的,更智能的拼写检查?有没有提供更多智能的图书馆?

编辑:我不想强迫用户在他们的机器上安装Microsoft Word,因此使用COM互操作不是一个选项.

.net nlp artificial-intelligence spell-checking hunspell

5
推荐指数
1
解决办法
882
查看次数

使PowerShell脚本在全局范围内运行cmdlet

我编写了以下PowerShell脚本:

function Reload-Module ([string]$moduleName) {
    $module = Get-Module $moduleName
    Remove-Module $moduleName -ErrorAction SilentlyContinue
    Import-Module $module
}
Run Code Online (Sandbox Code Playgroud)

此脚本的唯一问题是Import-Module仅适用于该脚本的范围 - 它不会在全局范围内导入该模块.有没有办法让脚本导入一个模块,以便它在脚本完成后保持不变?

注意:像这样的点源:. Reload-Module MyModuleName不起作用.

powershell

5
推荐指数
1
解决办法
3328
查看次数

来自WM_COPYDATA消息的编组结构

我试图让一个C#WPF应用程序与使用WM_COPYDATA用C编写的另一个应用程序进行通信.C app正在尝试发送一个结构如下:

typedef struct
{
    int x;
    int y;
    char str[40];
    double d;
    char c;
} DATASTRUCT;
Run Code Online (Sandbox Code Playgroud)

在我的C#app中,我定义了一个结构如下:

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct DATASTRUCT
{
    public int x;
    public int y;
    [MarshalAs(UnmanagedType.LPStr, SizeConst=40)]
    public string s;
    public double d;
    public char c;
};
Run Code Online (Sandbox Code Playgroud)

接收WM_COPYDATA消息的代码如下:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    hwndSource = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
    hwndSource.AddHook(new HwndSourceHook(WndProc));
}

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if (msg == 0x4A)
    {
        DATASTRUCT data = (DATASTRUCT)Marshal.PtrToStructure(lParam, …
Run Code Online (Sandbox Code Playgroud)

c c# struct marshalling interprocess

4
推荐指数
1
解决办法
5292
查看次数

处理大量RAM工作集的技巧

我正在开发一个专门为高性能PC设计的.Net 3.5应用程序,它可以进行大量的数据操作和计算.我最近遇到了一个4000 x 5000二维对象数组的需求,这对于32位PC来说非常大,并且会给我一个OutOfMemoryException.避免使用这样的阵列的唯一方法是沿着一条充满痛苦和痛苦的非常复杂,耗时的道路走下去.

专业人员是否有任何提示或技巧来处理大型工作RAM?你知道任何有用的库(特别是.Net)吗?有没有办法强制Windows为我的进程分配更多的RAM?

编辑:我正在使用的数组将包含大多数空引用,我正在使用该数组来跟踪相邻的对象.看看它们中的大多数是空引用,我还假设有一种更有效的方法来跟踪相邻对象,找到任何给定对象的邻居等.

algorithm memory-management

4
推荐指数
1
解决办法
267
查看次数

编写额外的代码以避免学习新的框架

我在我工作的地方是一个单独的商店,当我在那里开始时,我没有经验,并且从低于标准的计算机科学学院获得学士学位.最重要的是,我在公司的第一个项目不仅涉及制定好的设计原则,还涉及学习一门新语言.毋庸置疑,我的代码在开始时很糟糕,从那时起我添加的所有新功能都被破解了所有那些糟糕的代码.令我惊讶的是,我的软件和它一样好用.

我在工作期间学到了TON,我很想重构我的代码,使其更具可读性,因此未来的新员工可以潜入并帮助我.我也非常希望能够更轻松地添加新功能,而无需一起破解内容.我认为学习像Prism for WPF/Silverlight这样的框架会很有用,但是我有一个很大的待办事项列表(因为我是一个单独的商店),看起来它需要相当长的时间只是为了学习如何使用它.

现在我已经阅读了一些关于Prism的内容,我知道它背后的基本原理.此外,编写我自己的代码并不难实现Prism用于的一些相同的东西.我实际上已经在某种程度上做到了这一点,我在使模块更加模块化方面取得了很大的进步.

我的问题是:我应该继续编写更多的基础设施代码,这些代码能够提供我所需要的内容,而不是更多,或者我应该花时间学习像Prism这样的东西吗?或者,也许它可以被问这样的:我应该花时间写我自己的简单定制的解决方案,或者我应该花时间去掌握丰富的,广阔的框架,可能会复杂得多,有必要吗?在做出决定时,我应该考虑哪些因素?

time frameworks

4
推荐指数
1
解决办法
186
查看次数

用Linq搜索

我有一个对象集合,每个对象都有一个int Frame属性.给定一个int,我想在集合中找到具有最接近Frame的对象.

这是我到目前为止所做的事情:

public static void Search(int frameNumber)
{
    var differences = (from rec in _records
                       select new { FrameDiff = Math.Abs(rec.Frame - frameNumber), Record = rec }).OrderBy(x => x.FrameDiff);

    var closestRecord = differences.FirstOrDefault().Record;

    //continue work...
}
Run Code Online (Sandbox Code Playgroud)

这很好,一切都很好,除了我的收藏中有200,000个项目,我经常调用这个方法.有没有相对简单,更有效的方法来做到这一点?

c# linq optimization performance search

4
推荐指数
1
解决办法
264
查看次数

使用PowerShell获取分区名称

我有一个我格式化的闪存驱动器,以便驱动器上的卷标是"PHILIP".

在此输入图像描述

Get-PSDrive H -PSProvider FileSystem用来确定是否插入了驱动器,但是我真的想确定驱动器是否被卷标插入,即Get-PSDrive -VolumeLabel PHILIP -PSProvider FileSystem.当然VolumeLabel参数不存在所以这不起作用.

有没有办法按卷名列出计算机中的驱动器?

powershell drive removable-drive

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