Articles of .net

我可以通过使用PS获得RAID磁盘状态吗?

我有一个带有Raid 5的HP服务器。端口0和1用于数据和操作系统镜像。 Raid 5附带的软件是英特尔matrix存储pipe理器,并有基于窗口的apipipe理控制台来查看所有的端口,包括他们的状态。 现在他们都处于正常状态。 我不知道OS / Windows是否有一些API或.Net类访问RAID端口,并获得他们的地位? 如果是这样,我怎样才能使用PS来获取信息? 如果不是,我必须参考英特尔matrix存储pipe理器提供的dll吗? 基本上,我想写一个PS脚本来获取阅读状态。 如果任何端口磁盘不正常,则会通过咆哮协议发送一条消息。

在附加到NotifyIcon的ContextMenu中延迟单击事件

我正在为一个应用程序的插件(使用System.ComponentModel.Composition )在Windows UI的通知区域中放置一个图标。 trayMenu.MenuItems.Clear(); // Create context menu items foreach( IJob job in jobs ) { MenuItem menuItem = new MenuItem( job.Name ) {Tag = job}; menuItem.Click += MenuItemClick; trayMenu.MenuItems.Add( menuItem ); } private void MenuItemClick( object sender, EventArgs e ) { // … } 现在,当我点击该图标上下文菜单中的一个项目时, Click处理程序没有被调用。 有趣的是,当我再次右键单击图标(单击菜单项后)先前单击的MenuItem的Click处理程序被调用。 左键单击或hover在图标上不会触发此步骤。 到底是怎么回事? 更新 :我有一个强烈的感觉,我的问题与这个问题有关 。 但我仍然试图找出如何将其应用到我的插件/应用程序。

如何获得在Windows中的Z顺序?

我正在创build一个应用程序,与每个正在运行的应用程序交互 现在,我需要一个获取窗口z顺序的方法。 例如,如果Firefox和记事本正在运行,我需要知道哪一个在前面。 有任何想法吗? 除了为每个应用程序的主窗口执行此操作外,还需要为其子窗口和姐妹窗口(属于同一进程的窗口)执行此操作。

在C#中更改语言

我在Windows上用C#开发多语言程序 如何更改某些操作的Windows编写语言… 例如在焦点事件上将英语改为阿拉伯语。 谢谢

HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

我正在构build一个GIS应用程序,但是每当我运行代码时,都会给我这个错误 System.Runtime.InteropServices.COMException未处理检索具有CLSID {FBF5715D-A05D-11D4-A64C-0008C711C8C1}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG)) 。 另外,在“项目属性”中,禁用了COM Interop注册选项。

重命名正在运行的可执行文件(exe)文件

我们试图一次推送更新到多个服务器,我的经理发现可以重命名正在运行的.exe文件。 使用这些知识,他想重新命名一个正在运行的exe文件,并复制一个新版本的exe文件,这样任何运行foo.exe的内存拷贝的用户都可以正常运行,任何打开指向foo.exe的快捷方式的用户都将得到一个新的副本应用更新。 我想我需要澄清一下,他不希望旧的副本神奇地更新,他只是希望他们继续运行旧的副本,直到他们再次打开EXE,在这种情况下,它会打开新的名称旧的。 它有时会抛出一个exception,该文件正在使用他的程序,但如果他尝试在一个循环中重命名,它将最终成功。 在我的机器上,我还没有能够让它在一个循环中工作。 我的第一个也是主要的问题是:这样做是否可以接受? 重命名正在运行的可执行文件是否是一个有效的场景? 其次,如果这是一个有效的情况,那么如何可靠地做到这一点? 我们目前的想法是尝试使用File.Move(C#)进行重命名的一堆,如果它不起作用,然后写出一个错误日志,所以可以手动处理。

如何使用C#设置窗口的高度?

是否可以使用窗口句柄或进程句柄来设置窗口的高度? 我到目前为止,假设有问题的应用程序是记事本。 Process[] processes = Process.GetProcessesByName("notepad"); foreach (Process p in processes) { if (p.MainWindowTitle == title) { handle = p.MainWindowHandle; while ((handle = p.MainWindowHandle) == IntPtr.Zero) { Thread.Sleep(1000); p.Refresh(); } break; } } 我可以使用handle或p来设置窗口的高度吗?

为什么在通过Shell32读取公共快捷方式时遇到E_ACCESSDENIED?

我正在尝试读取C#4应用程序中所有桌面快捷方式的目标。 Windows桌面上的快捷方式可以来自多个位置,具体取决于快捷方式是为所有用户还是仅为当前用户创build的。 在这个特定的情况下,我试图从公共桌面读取一个快捷方式,例如从C:\ Users \ Public \ Desktop \ shortcut.lnk。 代码是这样的(path是一个string包含lnk文件的path): var shell = new Shell32.ShellClass(); var folder = shell.NameSpace(Path.GetDirectoryName(path)); var folderItem = folder.ParseName(Path.GetFileName(path)); if (folderItem != null) { var link = (Shell32.ShellLinkObject)folderItem.GetLink; 最后一行抛出一个System.UnauthorizedAccessException,表示不允许读取快捷方式文件的内容。 我已经尝试用户的私人桌面上的快捷方式文件(c:\用户\用户名\桌面),并正常工作。 所以,我的问题是: (1)为什么我的应用程序不允许/读取/代码的快捷方式,当我可以清楚地读取用户的内容? (2)有没有办法解决这个问题? 也许使用一个特殊的清单文件的应用程序? 顺便说一句,我的操作系统是Windows 7,64位。 好的 -H-

HTTP请求未经客户authenticationscheme“Ntlm”

在调用Web服务时,出现以下错误: HTTP请求未经客户authenticationscheme“NTLM”授权。 从服务器收到的validation头是“NTLM”。 HTTP请求未经客户authenticationscheme“NTLM”授权。 从服务器收到的validation头是“NTLM”。 我有一个调用WCF Web服务的Silverlight 4应用程序,都在我的IIS(7)上。 我的WCF Web服务使用NTLM(Windows身份validation)调用安装在其他Web服务器上的另一个ASMX Web服务。 这两个服务器,我的和ASMX Web服务的主机都在同一个域中。 当Silverlight客户端使用http://localhost/MySiteName从服务器打开应用程序时,一切正常。 但是,当Silverlight客户端使用http://MyServerName/MySiteName从不同服务器(不是服务器,但仍在同一个域中)打开应用程序时, http://MyServerName/MySiteName出现错误。 Windows身份validation在我的IIS中启用。 匿名身份validation在我的IIS中被禁用。 用于调用我的WCF Web服务的绑定configuration是: <binding name="winAuthBasicHttpBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> 调用ASMX Web服务的绑定configuration是: <binding name="ClNtlmBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Ntlm" /> </security> </binding>

如何调整dynamic加载的本机DLL的%PATH%?

我dynamic加载一个.NET程序集,这个程序集依赖于位于不同文件夹中的几个本地 .dll文件。 但是,只有在我的应用程序启动时,Windows的文件夹位于PATH环境variables中,Windows才能find这些DLL。 我想从我的程序修改我的PATHvariables,以允许find必要的库。 根据MSDN “search顺序如下:…在PATH环境variables中列出的目录”。 哪个PATH环境variables的实例被使用? 每个进程都有一个实例。 我试过Environment.SetEnvironmentVariable("PATH", …)但没有帮助。 我也尝试了SetDefaultDllDirectories()与AddDllDirectory(),但这些也没有任何区别。 症状是,当启动我的.exe(从CMD提示符 – 它是一个控制台应用程序) %PATH%包含必要的文件夹时,ProcessMonitor显示本机.dll被探测到所有的PATH文件夹,并最终find。 但是当%PATH%在启动的时候没有包含必要的文件夹时,只能在.exe文件夹和SYSTEM32中探测本地的.dll文件(尽pipe%PATH%包含更多的文件),而不pipe上面提到的SetEnvironmentVariable ()/ SetDefaultDllDirectories()/ AddDllDirectory()调用。 这是怎么回事? 我究竟做错了什么? 为什么我无法有效地调整stream程的PATH? 注意:AppDomain.AssemblyResolve事件不能帮助我,因为在本地.dll加载其他本机.dll时它不会被触发。