Articles of .net

如何以编程方式重新启动Windows资源pipe理器进程

我正在一个Windowsshell扩展,不幸的是,当对DLL进行更改时,我必须重新启动Windows资源pipe理器(因为它保持在内存中的DLL)。 我从迪诺埃斯波西托发现了这个节目,但它对我不起作用。 void SHShellRestart(void) { HWND hwnd; hwnd = FindWindow("Progman", NULL ); PostMessage(hwnd, WM_QUIT, 0, 0 ); ShellExecute(NULL, NULL, "explorer.exe", NULL, NULL, SW_SHOW ); return; } 有人可以分享一些东西吗? PS我意识到,我可以去任务pipe理器,并杀死探险家的过程,但我只是想这样做的懒惰的方式。 此外,这使自动化。 PPS我正在使用.NET进行开发,但shell重启function可能是C,C ++或.NET语言。 它只是一个小型的独立可执行文件。

写给远程MSMQ

好的,这是一个非常简单和根本性的问题。 如果我在Windows机器A上有一个应用程序,想要写入到Windows机器B上的队列,是否需要在机器A上安装MSMQ(即使没有队列)? 我刚刚开始为我的应用程序使用队列,并试图找出一些基础知识。 谢谢

为什么Console.Readline没有按预期执行

我有下面的代码来处理。 我在这里的问题是代码运行while循环,而不是等待在行上的inputString temp = Console.ReadLine() 。 需要帮助了解为什么以及如何修复请。 提前致谢! /*Banker's algorithm Implementation*/ class Program { static void Main(string[] args) { int n = 0;//number of resources we will be dealing with int proc_num = 0;//Total number of processes to share available resources IDictionary<String, SysProcess> processes = new Dictionary<String, SysProcess>(); IDictionary<String, int> MaxR = new Dictionary<String, int>();// […]

如何确定一个System.Diagnostics.Process是32位还是64位?

我试过了: process.MainModule.FileName.Contains("x86") 但它引发了一个x64进程的exception: Win32Exception:只有ReadProcessMemory或WriteProcessMemory请求的一部分完成

编写.NET以外的Windows客户端应用程序的最佳方法是什么?

我试图评估是否应该使我的新的Windows应用程序的.NET框架的要求。 我相信.NET是编写Windows客户端应用程序的最好和最有效的方式,所以下一个最好的select是多么痛苦。 具体来说,我试图避免安装.NET客户端configuration文件,下载28MB,如果它像常规的.NET Framework安装程序,永远。 我之前使用过wxWidgets和WTL,认为两者都是很好的select。 静态链接的wxWidgets可执行文件是30MB,但将被打包。 WTL有一个小脚印,但用丑陋的代码创build。 我已经使用了一些微星创造者,但它不是WiX或NSIS,这似乎是最好的免费select。 我正在寻找任何build议,使用Client Profile安装程序的经验,使用小型自定义业务应用程序的经验或任何相关的build议。 编辑:我只在这里赚了几千块钱,所以我正在寻找一些免费或便宜的东西(在我已经拥有的Visual Studio之后)。 我不介意用一种新的语言学习,但我更喜欢一种正在使用的方法。

如何将文件放入回收站而不是删除?

程序解决scheme当然…

各种剪贴板/拖放格式是什么意思?

我正在玩拖放。 我做了一个示例应用程序,并从我的音乐文件夹中删除一个文件到我的应用程序 以下是e.Data.GetFormats()返回的内容: Shell IDList Array UsingDefaultDragImage DragImageBits DragContext DragSourceHelperFlags InShellDragLoop FileDrop FileNameW 文件名 IsShowingLayered DragWindow IsComputingImage DropDescription DisableDragText ComputedDragImage IsShowingText 这些都意味着什么,以及如何解码和使用它们? 谷歌search他们每个人没有得到任何有用的信息。

.NET中安全身份的本地化

我正在寻找在.NET中实现一个命名pipe道的服务/客户端通信,并遇到这个代码 ,当初始化pipe道的服务器端必须build立一个pipe道的安全描述符。 他们这样做: PipeSecurity pipeSecurity = new PipeSecurity(); // Allow Everyone read and write access to the pipe. pipeSecurity.SetAccessRule(new PipeAccessRule("Authenticated Users", PipeAccessRights.ReadWrite, AccessControlType.Allow)); // Allow the Administrators group full access to the pipe. pipeSecurity.SetAccessRule(new PipeAccessRule("Administrators", PipeAccessRights.FullControl, AccessControlType.Allow)); 但是我正在看,而且我很担心指定SID作为string或Authenticated Users和Administrators部分。 有什么保证他们会用中文或其他语言来称呼他们呢?

为.Net下的低完整性进程添加写访问权限

我正在创build一个FileSecurity文件创build应该有一个写访问低廉的完整性过程。 FileSecurity fileAcl = new FileSecurity(); // add everyone IdentityReference sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); FileSystemAccessRule rule = new FileSystemAccessRule(sid, FileSystemRights.FullControl, AccessControlType.Allow); fileAcl.AddAccessRule(rule); // add restricted sid = new SecurityIdentifier(WellKnownSidType.RestrictedCodeSid, null); rule = new FileSystemAccessRule(sid, FileSystemRights.FullControl, AccessControlType.Allow); fileAcl.AddAccessRule(rule); // add low integrity level rights // ??? 如果有人知道如何在不调用C API的情况下做到这一点,我将不胜感激,否则我将不得不重新使用它。 提前致谢

键盘挂钩改变键的行为

我正在创build一个安装键盘钩子的程序来捕获所有键并显示一些与它们相关的文本。 但是,我遇到了一个障碍,这是一些键更改行为,当安装钩。 我会看到发布一个小的,但完整的testing程序,但现在我只是描述了这个问题。 这个问题展现在Windows 7 64位,.NET 4.0(一个C#程序)上。 我认为这些都不重要。 我的钩子通过SetWindowsHookEx自行安装,然后处理在系统中处理的所有密钥。 如果钩子方法简单地返回,或者对键的最小处理(我将发布什么改变了一秒钟的行为),则键盘按照预期在程序中起作用。 但是,如果我从User32.dll中调用这个函数ToAscii ,找出我的键盘上的OemTilde或类似的键,那么任何“覆盖下一个键”的键将停止运行。 我不知道这样的键的正确名称,但是两个撇号types,“和” , as well as 〜 and ¨,都不起作用。 例如,如果我点击~然后是N ,则显示如下: 没有安装键盘挂钩: 随着键盘挂钩安装:n(通知no〜以上) 有谁知道为什么发生这种情况,我怎么能解决这个问题? 现在我只好在其他程序中正确处理密钥,即使这意味着我将无法在自己的程序中正确检测到正确的密钥序列。 一些更多的信息: 如果我将ToAscii函数作为钩子方法的一部分,则会出现不同的问题。 像¨键是处理两次,即。 如果我打了¨一次,记事本收到两个¨¨字符,现在打N只是加了N 但是,如果我使用BeginInvoke来处理单独的线程上的键,键盘钩子方法返回后,第一个问题发生。 我的程序可能有点特别: 我不使用键盘状态(即我传递的“键状态”256字节数组只是满了0) 我不在乎死钥匙(在我的程序不会处理它们的意义上,我只关心他们,我不希望我的程序使它们对系统的其他部分无用) 就这样,我的代码最终看起来如下: private bool IsDeadKey(uint key) { return ((Hook.Interop.MapVirtualKey(key, 2) & 2147483648) == 2147483648); } void _Hook_KeyDown_Async(KeyDownEventArgs e) { var inBuffer = […]