Articles of c + +

如何查看是否对文件或文件夹select“包含可inheritance的权限”?

我在C#编写一个小实用程序,以确保指定的文件夹及其所有内容具有适当的访问权限(我想授予Authenticated Users组完全访问权限)。 下面的代码似乎正常工作更新顶级文件夹的ACL(访问控制列表): SecurityIdentifier allUsers = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; FileSystemAccessRule newRule = new FileSystemAccessRule(allUsers, FileSystemRights.FullControl, iFlags, PropagationFlags.None, AccessControlType.Allow); DirectoryInfo info = new DirectoryInfo(folderPath); DirectorySecurity security = info.GetAccessControl(); security.AddAccessRule(newRule); info.SetAccessControl(security); 但是,我注意到,这个新的访问规则不会传播到在其安全属性中未选中“包含可inheritance权限…”选项的子文件夹。 这只是有道理的。 所以,我想要做的是打开任何这样的子文件夹的安全权限inheritance。 我的挖掘发现了ObjectSecurity.SetAccessRuleProtection方法应该是我需要的一半。 但是,在已经inheritance父类的DACL的对象上盲目地使用上述方法似乎是草率的。 因此,我想确定哪些对象的权限inheritanceclosures,但我似乎无法find相应的方法或返回此信息的属性。 有一个吗? 我在这里错过了什么?

安全地使用临时文件

在我的程序中有一个静态库,它只能把文件名作为input,而不是实际的文件内容。 对于图书馆的源代码,我无能为力。 所以我想:创build一个全新的文件,将数据存储到它中,将其刷新到磁盘(?),将其名称传递给库,然后删除它。 但我也希望这个过程相当安全: 1)文件必须重新创build,没有任何虚假的数据(也许它不是关键,但无论如何); 2)除了我的进程之外,任何人都不能读/写这个文件(我希望库能够处理我的实际数据,而不是一些聪明的插件)。 3)我完成这个文件后,它必须被删除(好的,如果有人TerminateProcess()我,我猜没有什么可以做的,但仍然)。 该库似乎使用非Unicode fopen()来打开给定的文件,所以我不太清楚如何处理所有这些,因为该程序旨在运行在Windows上。 有什么build议么?

IPv6在编程级别的Windows

在Windows中编程级别的IPv6和IPv4有什么不同? 我们可以只将IPv4地址更改为IPV6,并保持所有其他程序相同,是否可以正常工作?

.NET Thread.Sleep是否受到DST(或系统时间)更改的影响?

我不确定Windows内核如何处理线程时间… 我正在谈论的DST和任何其他事件,影响一天在Windows上的时间框。 例如, Thread.Sleep将阻塞从零到无限毫秒的线程。 如果内核使用与一天中的时间相同的“时钟”,那么何时使用 (a)某人手动改变一天的时间,或者 (b)一些时间服务器的同步改变了一天的时间,或者 (c)夏时制开始或结束,系统已configuration为响应这两个DST事件, 等等 , 睡觉线程在任何方式受到影响? 即内核是否处理这样的事件,程序员不需要做什么? 注意 :对于非关键应用程序,这可能是一个谁在乎? 情况。 对于关键应用,知道这个问题的答案是重要的,因为有可能必须编程这样的例外条件。 谢谢 编辑:我想到了一个简单的testing,我在LINQPad 4中运行。 testing包括让线程进入睡眠状态,大约在线程进入睡眠的同时启动一个手动定时器,然后(a)将时间提前一个小时,然后进行第二个testing,将时间移回到两个小时…在这两项testing中,睡眠时间都没有受到影响。 底线:使用Thread.Sleep,不需要担心会影响一天的时间的事件。 这里是琐碎的C#代码: Int32 secondsToSleep; String seconds; Boolean inputOkay; Console.WriteLine("How many seconds?"); seconds = Console.ReadLine(); inputOkay = Int32.TryParse(seconds, out secondsToSleep); if (inputOkay) { Console.WriteLine("sleeping for {0} second(s)", secondsToSleep); Thread.Sleep(secondsToSleep * 1000); Console.WriteLine("i am awake!"); } else […]

在.NET应用程序中禁用可访问性快捷方式?

此MSDN文章 – http://msdn.microsoft.com/en-us/library/bb219746(VS.85).aspx#Disabling_Accessibility_Shortcut_Keys – 为C ++程序员提供有关如何暂时禁用可访问性的Windows快捷方式的信息(例如按住Shift 8秒,或者连续按下Shift 5次以上)。 当然,在C#中有一些简单的方法可以做到这一点,但我找不到任何资源。 我在非全屏应用程序中使用DirectInput。 我想要做的就是没有恼人的popup窗口出现; 尽pipe如此,为了防止应用程序以非优雅的方式closures(我不希望在这种情况下永久性地改变用户的设置),我宁愿select一些不需要使用Windows设置的东西, 。 有什么想法吗?

Windowsencryption容器有多安全?

我正在使用每个用户的Win32encryption密钥容器(通过.Net RSACryptoServiceProvider类)来存储用于解密存储在口令pipe理器中的密码的私钥。 该私钥存储的安全性如何? 很明显,从同一个用户帐户运行的任何程序都可以访问它。 但实际上是基于用户密码encryption的关键? 我可以假设只有在用户login后才能访问私钥? 或者服务(或其他帐户)仍然可以提取密钥? 计算机pipe理员可以不知道用户的密码解压缩吗? 可以通过使用pipe理帐户重置用户密码来提取密钥吗? 如果计算机被盗取,攻击者可以访问硬盘(但不知道用户的密码),他可以提取私钥吗? 如果用户locking了会话,攻击者是否可以使用pipe理帐户/内核驱动程序从内存中提取密钥? PS我知道“主密钥”模式,但在我的情况下是不能接受的,所以我需要以最安全的方式存储密码。

在Windows 8中读取文本文件

我在阅读windows-8中的embedded式资源(文本文件)时遇到了一些麻烦,通常我使用Assembly.GetExecutingAssembly()但我似乎无法在这一个。 我引用System.Reflection命名空间,但它说找不到,认为它可能被删除。 有任何想法吗? 目前使用Windows 8 Consumer Preview 代码: Assembly readAssembly = Assembly.GetExecutingAssembly(); StreamReader streamReader = new StreamReader(readAssembly.GetManifestResourceStream("Test.txt")); Assembly readAssembly = Assembly.GetExecutingAssembly(); StreamReader streamReader = new StreamReader(readAssembly.GetManifestResourceStream("Test.txt")); 错误:System.Reflection.Assembly'不包含'GetExecutingAssembly'的定义

Qt禁用Windows 10游戏栏

我有一个在Qt中开发的应用程序,使Windows 10认为它是一个游戏,并打开一个popup框,说Press the Win-key + G to open the Game bar. 这是非常无益的,因为我的申请不是游戏; 并干扰用户体验。 如何从我的应用程序代码中closures此function? 我一直无法find任何相关的文件。 提前致谢。

DirectX桌面

我想为使用DirectX的Windows 7制作animation桌面背景。 我正在使用C#,SlimDX和一些Windows API函数的P / Invoke导入。 我并不擅长使用本机Windows编程,但是我在网上有一个捅,我相信我需要做的是: 1)find包含dekstop壁纸的窗口的句柄,将其挂接到DirectX设备并绘制到其中。 2)制作一个新的输出窗口,并将其插入到桌面壁纸的上方,但在桌面图标的下方。 我已经尝试了这两个,但似乎都没有工作。 如果我从GetDesktopWindow()返回的句柄开始浏览窗口的层次结构,我可以去Desktop – > WorkerW – > SHELLDLL_DefView – > SysListView32。 如果我将DirectX设备连接到此句柄,则可以绘制整个桌面,但也会覆盖这些图标。 如果我创build一个Windows窗体,使用SetParent()将它的父窗体设置为SHELLDLL_DefView,然后使用SetWindowPos来播放它的Z顺序,我似乎只能把它放到桌面壁纸的后面或桌面+图标的前面。 它看起来好像桌面壁纸是包含图标的文件夹视图的背景,因此我正在尝试做的事情无法正常工作。 唯一的解决scheme就是不使用桌面上的图标,或find一些替代scheme,例如覆盖桌面,然后覆盖一个包含某个文件夹内容视图的透明窗口。 有没有人知道我应该做什么,甚至不知道我想做什么是可能的? 看来你可以使用GDI(因为我相信wxSnow程序)可以绘制到桌面背景,而且我已经看到类似于我在Windows XP下使用DirectX壁纸模式所做的VLC媒体播放器的东西(有趣的是,我似乎无法让我的系统上启用此选项)。 谢谢!

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]