繁体   English   中英

C#-获取以编程方式在Windows启动时运行的应用程序列表

[英]C# - Get list of application which runs on windows startup programatically

我想获取以编程方式在Windows启动时运行的应用程序的列表。

我在msconfig-> startup中看到了那些应用程序。

但是当我在C:\\ User \\ Appdata \\ Microsoft \\ windows \\ start菜单\\ programs \\ startup中看到它时

它显示文件夹为空。

如何以编程方式C#获取那些启动应用程序列表。

您所看到的msconfig中的那些虽然不在全部中,但是在注册表中。 您可以尝试阅读

/Software/Microsoft/Windows/CurrentVersion/Run

/Software/Microsoft/Windows/CurrentVersion/RunOnce

HKEY_LOCAL_MACHINEHKEY_CURRENT_USER

您可以在MSDNsupport.microsoft上找到有关这些信息。

在CodeProject上尝试使用C#注册表中读取,写入和删除文章以开始使用注册表。

现在,正如我在上面说的那样,它们还不存在。 列出那些仍然会丢失服务和驱动程序的代码,以及将启动异步的其他一些代码,例如Explorer扩展,Control Panel扩展,音频和视频的编解码器等。 所有这些都没有考虑客户端计算机可能不会将资源管理器用作外壳程序。

我建议您看看sysinternals的自动运行 您也可以使用其命令行工具来获取所需的信息。

有一篇不错的文章: 使用“系统配置实用程序”了解和控制启动应用程序

还有一个很棒的工具来查看所有启动程序的列表: Autoruns

例如,您可以枚举HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run键的字符串值:

const string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
using (RegistryKey startupKey = Registry.LocalMachine.OpenSubKey(runKey))
{
    var valueNames = startupKey.GetValueNames();

    // Name => File path
    Dictionary<string, string> appInfos = valueNames
        .Where(valueName => startupKey.GetValueKind(valueName) == RegistryValueKind.String)
        .ToDictionary(valueName => valueName, valueName => startupKey.GetValue(valueName).ToString());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM