Articles of .net

与Windows服务运行UI

我打算运行一个启动/监视UI应用程序使用Windows服务(用C#编写),并选中“允许服务与桌面交互”。 这与Windows XP工作正常,但与Windows 7的popup如下所示 当我点击查看消息,然后整个屏幕空白,只有UI显示,如下所示。 有什么办法可以让它在没有显示信息的情况下工作,并且屏幕变得空白。 意见/build议表示赞赏。 问候DEE

如何识别.Net应用程序中的默认audio设备?

我有点困惑。 有没有简单的方法来设置正确的audio设备(input/输出)在我的VoIP .NET应用程序不使用DirectX? “正确的audio设备”可能意味着 – 已经在Windows中设置为DEFAULT的设备。 如Skype(或X-Lite)在大多数情况下正确selectaudio设备。 但是如何? 只是得到的设备列表不解决问题,因为我不知道如何select适当的。 我想XP和Vista(7)的解决scheme可能会有所不同。 先谢谢你!

我怎样才能捕捉到另一个进程的未处理的exception?

我想修改或只是加载一个.NET可执行文件,然后处理它的未处理的exception。 我的目标是做一个可以发送堆栈跟踪的智能处理程序。

VS 2010工具的gacutil.exe安装程序集在哪里?

我使用Visual Studio 2010命令提示符的gacutil.exe来安装程序集。 我期望该程序集被添加到C:\WINDOWS\assemblies ,但它被添加到C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL并不显示在C:\WINDOWS\assemblies 。 这是一个问题,我应该担心它没有显示在那里?

错误应用程序<app_name>,版本<版本号>,错误模块kernel32.dll

我有一个Windows应用程序构build使用C#和.net框架2.0,并安装在Windows Server 2003上。 我testing了我的机器上的应用程序,它在我的机器上完美地工作。 两台机器之间的区别仅在于,我的机器具有Windows Vista操作系统,而发生错误的机器具有Windows Server 2003操作系统。 当我启动应用程序时,它可以正常工作一段时间,但随后出现一个错误 错误的应用程序,版本,错误模块kernel32.dll,版本5.2.3790.4480,邮票,debugging? 0.故障地址0x000bef7。 来源:.NET运行时2.0错误类别:无事件ID:1000 有谁知道为什么这个错误来了? 我GOOGLE了这个错误,但大部分的解决scheme是为explorer.exe或Internet Explorer。

为什么打电话给PerformanceCounter很慢?

我正在从PerformanceCounters读取'%CPU'和'可用内存'的服务器上工作。 它在我的开发机器上运行良好。 但是在实际的服务器上,从这两个PerformanceCounter读取真的很慢。 至less在前两个读取操作。 执行以下代码可能需要4-6分钟时间: Stopwatch watch = new Stopwatch(); Log.Instance.Debug("Going to initialize Diagnostic's PerformanceCounters"); watch.Start(); m_CPUPerformanceCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true); m_MemoryPerformanceCounter = new PerformanceCounter("Memory", "Available MBytes", true); m_CPUPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); //Ensure an updated value… System.Threading.Thread.Sleep(1000); m_CPUPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); watch.Stop(); Log.Instance.Debug("Finished initializing Diagnosticss PerformanceCounters. Time elapsed: {0}", watch.Elapsed); 当我在开发机器上运行这个代码时,它会在不到2秒的时间内完成(有时甚至更less)。 但是在我们产品的客户端应该使用的实际服务器上,这将需要很长时间。 见下文: Finished initializing […]

文件被复制到SysWOW64而不是System32

我的应用程序运行时必须将psTool实用程序复制到System32文件夹。 我在64位Windows 7上,每当我尝试通过File.Copy将exe复制到system32位文件夹时,exe总是被复制到SysWow64。 当我在destFile上放置一个断点时,path显示为C:\Windows\System32但文件不会进入(进入sysWow64)。 我已经尝试了Special Folder SystemX86 ,但文件再次进入sysWOW64。 string sourceFile = "C:\bin\Debug\somexe.exe" string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName); File.Copy(sourceFile, destFile, true); 任何build议我在这里失踪? 编辑 正如答案中所指出的那样,正在发生文件系统redirect。 我正在使用64位操作系统上的控制台应用程序的Visual Studio的默认设置开发应用程序。 我不确定在编译时必须保留哪些设置/开关,以便应用程序可以在32位和64位操作系统上运行。 基本上,它应该只是设置将文件复制到System32而不pipe它是什么位的操作系统。 在后面的程序中,我必须通过命令行访问psTools实用程序,如果将其放在SysWOW64中,命令行不可用。 如果我进行更改,要使用SysWOW64的32位cmd.exe,这将再次是64位平台特定的,我不想select。 任何解决scheme,可以使应用程序运行在32位和64位没有问题? 我是否必须修改代码(如何?)还是必须修改此控制台应用程序项目的某些属性(哪些属性)?

如何使.NET应用程序“大地址感知”?

假设我已经使用/ 3GB开关启动了32位Windows Server,我怎样才能使.NET应用程序使用额外的地址空间?

如何在.NET中加载插件?

我想提供一些在我的软件中创builddynamic加载插件的方法。 典型的方法是使用LoadLibrary WinAPI函数加载一个dll并调用GetProcAddress来获取指向该dll内部函数的指针。 我的问题是如何在C#/ .Net应用程序中dynamic加载插件?

定义执行程序的工作目录(C#)

我目前正试图从一个特定的文件夹中启动一个可执行文件。 我有下面的代码足够奇怪地崩溃应用程序: Process p = new Process(); p.StartInfo.WorkingDirectory = "dump"; p.StartInfo.FileName = s; p.Start(); 我debugging它,它是说它无法find文件启动,但文件/文件夹defintly存在,是我的语法不好? 下面的代码工作,但工作directroy没有定义,所以它找不到可执行文件 Process.Start(@"dump\", s);