Articles of Windows

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

程序解决scheme当然…

如何连接Windowsbatch file中的string?

我有一个目录,我想用a列出所有.doc文件; 。 我知道下面的批处理命令回显所有的文件: for /r %%i In (*.doc) DO echo %%i 但是现在我想把它们都放在一个variables中,加一个; 在两者之间,并立即回声。 我怎样才能做到这一点? set myvar="the list: " for /r %%i In (*.doc) DO <what?> echo %myvar%

FlushViewOfFile(Windows)和msync(Linux)的耗时

早上好, 我们感兴趣的是FlushViewOfFile和msync的时间消耗。 引用UnmapViewOfFile文档 : 为了尽量减less电源故障或系统崩溃时数据丢失的风险,应用程序应使用FlushViewOfFile函数显式刷新修改后的页面。 是FlushViewOfFile()和msync()昂贵的操作? 我们要问的原因是,在我们的应用程序中,我们可能不需要在发生系统崩溃时将数据丢失的风险降到最低。 谢谢,

在XP上,同步文件和文件夹的最佳方式

我使用的SyncToy 1.4,这将是我所需要的除了: 它不能处理在系统之间改变的分配盘符(例如,同步USB驱动器), 它将自己的(隐藏)文件保存在同步的文件夹中(这是OS / FS的限制吗?), 它会重新创build已删除的文件夹, 它将同步从未同步的文件夹中的新子文件夹 有时会发现所有的文件在他们仍然是相同的时候发生了变化。 它不能处理很长的文件path/名称 SyncToy 2.1太慢,无法使用。 特别是在没有任何更改的情况下再次运行文件夹时,将从头开始扫描所有文件和子文件夹以获取差异。 它必须是一个不使用基于Internet的存储的解决scheme,因为这不总是可用的,否则可能太慢。 我更喜欢某些不会将自己的文件添加到要同步的文件夹,以及用于更改文件和文件夹同步选项的快捷方式。 运行时,交互性越差越好,理想情况下安全地同步多个文件夹对,只需点击几下鼠标(就像SyncToy一样)。 我必须使用rsync和batch file吗? 奶奶没有困难地使用GUI的东西,会更好。 这是我的标准: 不需要Internet连接。 它不能在源或目标中创build它自己的pipe家文件/文件夹(也许这是因为NTFS的缺点而必须完成的)? testing:带有两个非空子文件夹A和B的源文件夹。将子文件夹B移动到子文件夹A中,是否将其复制到目标文件夹中? testing:重命名子文件夹A中的文件,它是否在目标文件夹中重复这个? 只需一次或两次鼠标点击,可以同时完成多个文件夹对同步操作? 它是否有一个选项来预览即将进行的更改? 它是否允许轻松更改源和/或目标path? 它必须很快,(特别是如果重新扫描两个文件夹树没有任何改变)。 testing:在PC 1上同步USB驱动器,然后将文件和文件夹从USB驱动器复制到PC 2,更改PC 2上的文件夹和文件(而PC 1上的文件夹和文件保持不变),同步PC 2上的USB驱动器,然后重新同步USB驱动器上的PC 1上的文件和文件夹。 它可以做到这一点没有任何错误? 不包括安装,奶奶可以舒适地使用它吗? – >

我如何获得桌面的窗口句柄?

Windows API提供了一个API GetDesktopWindow() ,它返回窗口句柄 但我用Spy ++进行了testing,发现桌面的窗口句柄和“Windows桌面”的窗口句柄是不一样的。 由于“Windows桌面”是一个列表视图,我需要执行以下操作 1) HANDLE hWnd = GetDesktopWindow() ; 2) FindWindow(hWnd, ….. ) with the SyslistView32 as the Window class. 一旦我得到窗口句柄,我想使用SendMessage()进行操作,如获取选定的文件名,select的文件数量等。 请给出你的意见。 我正在使用Windows SDk来做这件事

以编程方式确定远程桌面协议版本?

远程桌面协议版本6.1改变了RDP会话处理的方式(使会话0,以前意味着“控制台会话”,成为非交互式会话)。 我需要能够从我的程序中找出如何确定在当前RDP会话中正在使用的RD协议版本。 没有什么我可以find在Windowsterminal服务API,但是,似乎给了我的协议版本。 任何build议,将不胜感激。 非常感谢。

是否有可能在batch file中的回波行中放置一个新的行字符?

是否有可能在batch file中的回波行中放置一个新的行字符? 基本上我想能够做到相当于: echo Hello\nWorld 在Linux中你可以很容易地做到这一点,但是我不知道如何在Windows中做到这一点。

Windows Vista / Win7权限问题:SeDebugPrivilege&OpenProcess

我所能find的关于升级到适合我需要的特权的一切都与我目前的方法一致,但存在问题。 我希望也许有人有一些Windows Vista / Win7的内部经验,可能会发光的地方,只有黑暗的光线。 我相信这会很久,但请和我一起裸露。 背景 : 我正在开发一个应用程序,需要访问当前机器上其他进程的内存。 显然,这需要pipe理员权限。 这也需要SeDebugPrivilege ,我相信自己正确地获得,虽然我质疑是否有更多的特权是不必要的,因此我的问题的原因。 代码至今在所有版本的Windows XP,以及我的testingVista32和Win7x64环境中都能够成功运行。 处理: 程序将始终以pipe理员权限运行。 这可以假设贯穿这篇文章。 升级当前进程的Access Token以包含SeDebugPrivilege权限。 使用EnumProcesses在系统上创build当前PID的列表 使用OpenProcess和PROCESS_ALL_ACCESS访问权限打开一个句柄 使用ReadProcessMemory读取另一个进程的内存。 问题: 在开发和个人testing(包括Windows XP 32&64,Windows Vista 32和Windows 7 x64)期间,一切工作都正常。 但是,在同事的Windows Vista(32位)和Windows 7(64位)机器的testing部署过程中, OpenProcess出现通用Access Denied错误似乎存在特权/权限问题。 在以有限的用户身份运行时(如预期的那样)以及以pipe理员身份(右键单击>以pipe理员身份运行以及从pipe理员级别的命令提示符运行时)时,都会发生这种情况。 但是,在我的testing环境中,这个问题对于我自己来说是不可重现的。 我亲眼目睹了这个问题,所以我相信这个问题是存在的。 我可以在实际环境和我的testing环境之间区分的唯一区别是在UAC提示符下使用域pipe理员帐户时发生的实际错误,而我的testing(没有错误的工作)在本地使用本地pipe理员帐户UAC提示。 看起来,虽然使用的凭据允许UAC以“pipe理员身份运行”,但进程仍然没有获得能够在另一个进程上进行OpenProcess的正确权限。 我对Vista / Win7的内部知识不是很了解,所以我希望有人知道可能是什么原因。 踢球者: 报告这个错误和谁的环境的人可以定期地重现这个错误,有一个小的应用程序,名为RunWithDebugEnabled ,它是一个小的引导程序,看起来会提升自己的权限,然后启动传递给它的可执行文件inheritance升级的权限)。 在使用此程序运行时,在UAC提示符下使用相同的域pipe理员凭据,程序将正常工作,并能够成功调用OpenProcess并按预期运行。 因此,获得正确权限肯定是个问题,而且已知域pipe理员帐户是一个pipe理员帐户,应该能够访问正确的权限。 (显然获得这个源代码会很好,但如果可能的话,我不会在这里)。 笔记: 如上所述,失败的OpenProcess尝试报告的错误是Access Denied 。 根据OpenProcess MSDN文档: […]

.Net 3.5 Windows窗体应用程序:64位Vista上的x86与x64加载时间

我们正在开发Winforms应用程序,并正在优化启动时间。 该应用程序运行在64位Vista机器上。 在我们的testing中,我们发现什么似乎是一个直观的结果。 其他所有的情况相同,只有一半的时间针对32位和64位的负载。 任何人都可以谈到为什么? 谢谢。 [编辑]我们通过ClickOnce部署应用程序,从我们的研究开始在一个独特的沙箱应用程序。 所以它总是冷冷的开始,所以看起来提高性能在这里是徒劳的。 我们的主要问题是项目中存在32位dll。 一旦我们在x86上定位项目(即使它在x64上运行),加载时间减半。 [/编辑]

将Rust应用程序从Linux交叉编译到Windows

基本上我正试图编译最简单的代码到Windows,而我正在Linux上开发。 fn main() { println!("Hello, and bye.") } 我通过search互联网发现了这些命令: rustc –target=i686-w64-mingw32-gcc main.rs rustc –target=i686_pc_windows_gnu -C linker=i686-w64-mingw32-gcc main.rs 可悲的是,他们没有一个工作。 它给了我一个关于标准箱失踪的错误 $ rustc –target=i686_pc_windows_gnu -C linker=i686-w64-mingw32-gcc main.rs main.rs:1:1: 1:1 error: can't find crate for `std` main.rs:1 fn main() { ^ error: aborting due to previous error 有什么方法可以在Linux上编译将在Windows上运行的代码?