Articles of .net

如何使用C#从Windows服务访问Linux目录/文件

我有一个C#Windows服务,需要访问Linux计算机以获取特定目录中的文件列表。 什么.NET 3.5SP1方法将使用,允许我这样做? 谢谢。

在没有FILE_SHARE_DELETE的情况下重命名在另一个进程中打开的文件

使用Windows API,可以重命名另一个进程中没有FILE_SHARE_DELETE权限的文件吗? 我认为这是不可能的基于CreateFile文档说: 注意 :删除访问权限允许删除和重命名操作。 与此相一致的是,通过在最终用户命令提示符中进行常规rename ,我经常遇到The process cannot access the file because it is being used by another process. ; 通过最终用户GUI和通过python的os.rename重命名os.rename发生类似的错误。 然而, 这个高度回应的答案似乎恰恰相反: 如果任何其他进程打开文件而不删除共享,删除将失败,重命名从来不是一个问题。 这不仅仅是一个小点, 整个答案取决于这个陈述:它只解决OP问题,如果重命名不会失败,当删除。 我错过了什么? 注意:如果有问题,我指的是使用C ++ API的Windows 10(我认为它比C#API更强大)。 编辑:移动代码片段到一个新的问题 。

当用户试图打开一个新的实例时,返回到一个已经打开的应用程序

这是我一直未能弄清楚的问题。 防止第二个实例是微不足道的,并且有很多方法,但是,将已经运行的过程带回来不是。 我想要: 最小化:撤销最小化并将运行实例放在最前面。 在其他窗口后面:将应用程序放在前面。 我使用的语言是VB.NET和C#。

如何检测Windows 10在Windows窗体应用程序中进入平板电脑模式的时间?

更新 虽然不是最优雅的解决scheme,似乎工作的一种方法是观察相关的registry值。 以下是使用WMI执行此操作的示例。 如果有比这更好的解决scheme,我很乐意听到任何人的消息。 using System; using System.Management; using System.Security.Principal; using System.Windows.Forms; using Microsoft.Win32; public partial class MainForm : Form { public MainForm() { this.InitializeComponent(); this.UpdateModeFromRegistry(); var currentUser = WindowsIdentity.GetCurrent(); if (currentUser != null && currentUser.User != null) { var wqlEventQuery = new EventQuery(string.Format(@"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell' AND ValueName='TabletMode'", currentUser.User.Value)); var […]

.NET模拟Ctrl + Alt + Del键

所有在标题中说,我怎样才能模拟组合Ctrl + Alt + DEL ? 我试过这个: SendKeys.Send("^(%({DEL}))") SendKeys.Send("^(%{DEL})") SendKeys.Send("^%{DEL}") 但没有工作。 我正在使用VB.NET和Windows XP SP3

我怎样才能让我的.NET应用程序自己擦除?

我怎样才能让我的C#应用​​程序擦除自己(自毁)? 以下是我认为可能有效的两种方法: 提供另一个删除主程序的程序。 但是,删除程序如何被删除呢? CMD创build一个进程,等待几秒钟,然后删除您的文件。 在这几秒钟内,你closures你的应用程序。 这两种方法似乎效率低下。 我有一种感觉,有一些内置的标志或Windows中允许这样的东西。 我应该怎么做? 另外,你可以提供一些示例代码? 更新:谢谢你所有的答案! 我要去尝试他们,看看我能得到什么。 首先,有人问我为什么要我的应用程序来做到这一点。 答案就在这里:前几天,我阅读了Joel Spolsky在其博客上发布的“Aardvark项目规范”,并提到客户端应用程序会在远程会话后自行删除。 我想知道这是如何工作的,以及如果我需要这样做,我可以完成这样的壮举。 以下是对build议的一些概述: 创build一个registry项,告诉Windows在重新启动时删除该文件 使用ping命令启动CMD,等待几秒钟,然后删除文件 当然,这两者都有其缺点,正如评论中所概述的那样。 但是,下面列出的这种方法是可行的吗? 有两个可执行文件:Program.exe和Cleaner.exe。 前者是程序本身,后者是删除Program.exe和本身的应用程序(如果它被加载到内存中,就像我将要解释的那样)。 Program.exe(有依赖项)是否可以将所有没有任何依赖关系的Cleaner.exe 加载 到内存中并运行? 如果这是可能的,Cleaner.exe是否可以打包到Program.exe中,然后加载到内存中,然后运行?

如果启用了Windows Update,请从.NET进行检查

有没有办法从.NET检查,如果Windows更新启用? 我想提醒用户每次login到我的应用程序,他们的计算机可能有风险,并给他们一个链接到Windows更新网站(或从控制面板的Windows更新应用程序)。 最好它应该在XP,Vista和Windows 7上工作。也许有一个registry项,甚至更好的API?

如何手动删除MSI安装?

我正在学习VS 2008安装项目,为我们的C#应用​​程序创build安装。 我犯了一个错误,试图在卸载过程中删除exe本身。 现在我手动删除exe文件,但条目仍然在添加删除程序列表。 我试图安装一个固定的新版本,但msi不允许我这样做。 我怎样才能手动删除旧版本(我可以使用registry,没问题)? 我正在使用XP机器。 谢谢 编辑:我删除它在该卸载registry项中的子项后,我仍然无法安装我的较新版本。

如何在Windows 7中打开GCStress?

我正在debugging一个GC堆腐败,并来到了我想尝试在WinDbg + PageHeap + AppVerifier + GCStress下运行该程序的步骤。 我发现在文章软件崩溃:错误模块mscorwks.dll,版本1.1.4322.2379 ,我可以启用GCStress像这样: reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v HeapVerify /t REG_DWORD /d 1 reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v StressLog /t REG_DWORD /d 1 reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v GCStress /t REG_DWORD /d 3 reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v FastGcStress /t REG_DWORD /d 2 (我正在尝试这种方法,它需要程序永远启动,我删除了registry中的最后两个条目,使其工作,可能是方法本身有问题。 或者在没有非托pipe模块的gc_heap :: garbage_collect中的.NET 4 Runtime中的Access […]

如何显示Windowslogin对话框?

如何显示Windowslogin对话框中的Windows WPF应用程序?