小编Mel*_*ovI的帖子

C#:如何在控制面板程序和功能中完全安装程序?

我读了很多关于获取程序的信息.算法没有做我想做的事.我需要完全像控制面板中那样安装程序.

所以我用过:

  1. WMI Win32_Product类.它只显示msi安装的程序.
  2. 注册表项.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.同样,某些程序不会显示在控制面板中,某些程序显示在控制面板中而不是此注册表节点中.

那么,这个世界上是否有人知道哪种算法使用控制面板来显示已安装的程序?

UPD1:是的,我使用64位,我知道64位已安装的程序"HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"还有另一个节点,但以下代码列举了twise HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion \卸载部分,很奇怪......

var programs = new List();
    string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
    using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
    {
        foreach (string subkey_name in key.GetSubKeyNames())
        {
            using (RegistryKey subkey = key.OpenSubKey(subkey_name))
            {
                var name = (string)subkey.GetValue("DisplayName");
                if(!string.IsNullOrEmpty(name))
                {
                    programs.Add(name);
                }
            }
        }
    }

registry_key = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key)) { foreach (string subkey_name in key.GetSubKeyNames()) { using (RegistryKey subkey = key.OpenSubKey(subkey_name)) { var name = (string)subkey.GetValue("DisplayName"); if (!string.IsNullOrEmpty(name)) { …
Run Code Online (Sandbox Code Playgroud)

.net c# windows registry controlpanel

17
推荐指数
2
解决办法
2万
查看次数

C#检测usb设备ClassCode(usb设备类型)

我需要知道系统中目前使用的是什么类型的USB设备.关于USB设备的类代码有USB规范.但我无法获取设备类型,WMI请求WQL: select * from Win32_UsbHub在类代码,子类代码,协议类型字段上给出空值.有关如何检测当前使用的USB设备类型的任何想法?

我目前的代码:

ManagementObjectCollection collection; 
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) 
{
    collection = searcher.Get();
    foreach (var device in collection)
        {
            var deviceId = (string)GetPropertyValue("DeviceID");
            var pnpDeviceId = (string)GetPropertyValue("PNPDeviceID");
            var descr = (string)device.GetPropertyValue("Description");
            var classCode = device.GetPropertyValue("ClassCode"); //null here
        }
}
Run Code Online (Sandbox Code Playgroud)

c# usb wmi

9
推荐指数
1
解决办法
6965
查看次数

Swagger 可以生成自定义泛型类型吗?

假设我们在 C# 中有 API 返回模型

public class ApiResult<T>
{
  public T Result;
  public bool Success;
}
Run Code Online (Sandbox Code Playgroud)

并将ApiResult<string>对象实例返回给客户端

所以我们有 swagger 生成的模型

ApiResult[String] {
  result (string, optional),
  success (boolean, optional)
}
Run Code Online (Sandbox Code Playgroud)

使用https://swagger.io/swagger-codegen/错误地转换为 typescript 类

'use strict';
import * as models from './models';
export interface ApiResultString {
    result?: string;
    success?: boolean;
}
Run Code Online (Sandbox Code Playgroud)

是否可以生成具有与输入模型相同的泛型的输出模型?

c# generics swagger typescript

6
推荐指数
1
解决办法
2700
查看次数

在进程之间传递 Serilog LogContext

是否可以Serilog从中获取所有属性LogContext?是否LogContext支持序列化/反序列化以在进程之间传递上下文?

c# serilog

3
推荐指数
1
解决办法
2265
查看次数

标签 统计

c# ×4

.net ×1

controlpanel ×1

generics ×1

registry ×1

serilog ×1

swagger ×1

typescript ×1

usb ×1

windows ×1

wmi ×1