Articles of .net

C#从“高级安全设置”获取“应用于”信息的目录

我正在写一个应用程序,用于search文件夹的权限,并返回权限(例如完全控制,读取),访问控制types(如允许,拒绝)和应用信息(如本文件夹,子文件夹和文件) 。 我能够使用DirectoryInfo的GetAccessControl(DirectorySecurity)方法获取大部分这些信息。 但是,我无法准确获取目录的“应用到”信息。 经过大量的研究,我遇到了这个StackOverflow问题如何更改文件夹审计选项下的“适用于”字段以编程方式(.NET) ,这导致我这个全面的页面http://msmvps.com/blogs/p3net/pages/access- control-in-net.aspx,但是使用两者都指定的规则,我没有像在Windows资源pipe理器中那样获得相同的“应用到”权限。 (来自http://msmvps.com/blogs/p3net/pages/access-control-in-net.aspx的表格) 这是我用来尝试和转换InheritanceFlags和PropogationFlags的组合的代码: private ApplyToType GetApplyToType(InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags) { if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.None) return ApplyToType.ThisFolderOnly; if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.ContainerInherit) return ApplyToType.ThisFolderAndSubfolders; if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.ObjectInherit) return ApplyToType.ThisFolderAndFiles; if (propagationFlags == PropagationFlags.None && inheritanceFlags == (InheritanceFlags.ContainerInherit | […]

定义不同types的二维dynamic数组

我想创build两个不同types的数组,像我可以添加到该数组的两个值其中之一是控制名,第二个是布尔值。

检测Windows进程使用C#而不使用WMI启动和退出事件

使用WMI的ManagementEventWatcher / EventArrivedEventHandler将导致创build另一个线程,我试图避免。 WMI也知道它的延迟。 所以我的问题是:如何检测Windows进程创build/终止与C#没有WMI? 有没有办法从非托pipe代码做到这一点?

在WinForms中如何处理隐形控件?

我试图重写.NET Compact Framework中窗体的OnPaint事件。 到目前为止,我可以用渐变,圆angular矩形等来绘制控件,而这些控件通常不能用于常规控件。 但是,当我想要使控制无形时,我遇到了问题。 现在,我所做的是重新绘制除了那些看不见的控件之外的所有控件。 由于需要一点时间,所以会导致一些闪烁。 有谁知道Windows如何处理绘画“隐形”的控制? 或者你可以build议任何algorithm或方法如何实现这一点。

RWX内存页面的风险

得到负面评论这个答案后 – 我可以实现计数器在.text区域,而不使用寄存器? ,我进行了一些调查,试图了解RWX内存页面是否真的非常用和稀有的事情,或者每个stream行的程序都有一些。 ( 科学! ) 我通过WinDBG连接到MSVS,执行!address /f:Image,PAGE_EXECUTE_READWRITE , 我看到很多这样的线条: 7a534000 7a537000 3000 MEM_IMAGE MEM_COMMIT PAGE_EXECUTE_READWRITE Image "C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\System\6836a951700c2eb01a933212425cda4e\System.ni.dll" 我检查了它的部分,并且有“Execute Read Write”标志的.xdata部分。 这是否意味着每个加载了.NET库的应用程序都有RWX内存页面? 例如你的浏览器(如果你运行Windows)。 (幸运的是,既不是FF8,也不是IE8不使用.NET) 那么,为什么我们打扰RWX记忆?

如何使表格停留在另一个上面

在我的.NET应用程序中,如果某些任务需要一段时间才能告诉用户程序仍然有效,则会显示带有“请稍候”消息的表单。 这个表格必须在自己的线程中运行,因为主线程是工作的,因此很忙。 我读过,可以使用Form.Owner来完成这个任务 ,但是如果表单运行在不同的线程上,我不认为这是有效的。 问题是,等待表单可以隐藏在主窗体后面,在这种情况下,用户看不到它,因为它没有任务栏button(它没有一个) 。 我的问题是,如果可以让等待窗体保持在主窗体之上而不使其成为AlwaysOnTop窗体(它将停留在所有窗口之上)?

一个.NET的Windows应用程序可以压缩成一个单一的。

我不太熟悉.NET桌面应用程序(使用Visual Studio 2005 )。 是否有可能从一个单一的.exe文件运行整个应用程序?

设置Form.KeyPreview = true的缺点?

我不知道Form.KeyPreview属性实际上是好的吗? 为什么它存在,我把我的“风险”设置为真? 我想这肯定会有一些负面影响 – 否则根本不应该存在(或者至less在默认情况下是正确的)? 编辑 :我完全知道它做了什么 。 我在问为什么 。 为什么我必须将它设置为true才能使键盘事件触发? 为什么键盘事件总是不能为表单启动? 标准行为不仅仅是什么? 我问的特别原因是:我刚刚在我的应用程序的基本forms中设置KeyPreview = true,其他所有formsinheritance。 我是否有什么恶心的意外?

.NET FileInfo.LastWriteTime和FileInfo.LastAccessTime是错误的

当我在正在写入的文件上调用FileInfo(path).LastAccessTime或FileInfo(path).LastWriteTime时,将返回文件创build的时间,而不是最后一次写入的时间(即现在) 。 有没有办法获得这些信息? 编辑:到目前为止所有的回应。 我没有尝试Refresh()但也没有做到这一点。 我回到了文件开始写入的时间。 这同样适用于静态方法,并创buildFileInfo的新实例。 Codymanix可能有答案,但我没有运行Windows Server(使用Windows 7),我不知道设置要testing的位置。 编辑2:没有人觉得这个function似乎不工作有趣吗?

KERNELBASE.dllexception0xe0434352偏移量0x000000000000a49d

我最近收到了一个来自运行我们的虚拟机上的应用程序的客户端的系统事件日志。 我注意到日志中的这些条目: Description: The process was terminated due to an unhandled exception. Framework Version: v4.0.30319 4/22/2014 5:05:28 PM;"Error";".NET Runtime";"1026";"Application: MyApp.exe Report Id: d50fe7ab-ca61-11e3-9e10-6805ca17040a" Faulting module path: C:\Windows\system32\KERNELBASE.dll Faulting application path: C:\Program Files\MyApp\bin\MyApp.exe Faulting application start time: 0x01cf5e44d3e971c2 Faulting process id: 0x13fc Fault offset: 0x000000000000a49d Exception code: 0xe0434352 Faulting module name: KERNELBASE.dll version: 6.1.7601.17514 time stamp: […]