C# 从注册表中获取不带参数的值

标签 c# static registry

我尝试通过调用以下代码来获取 AcroRd32.exe 的路径:

 public static string acrobatPath = Registry.GetValue(@"HKEY_CLASSES_ROOT\Applications\AcroRD32.exe\shell\Read\command", "", 0).ToString();

我收到的是正确的值:

"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" "%1"

但我只想要 AcroRd32.exe 的路径,不带“%1”。 我现在可以使用 split 命令:

public static string acrobatPath = Registry.GetValue(@"HKEY_CLASSES_ROOT\Applications\AcroRD32.exe\shell\Read\command", "", 0).ToString();
string[] split = new string[2];
split = acrobatPath.Split('"');
// mask path with ""
acrobatPath = "\"" + split[1] + "\""; //get only path

但由于静态属性,acrobatPath 值无法更改。

我也不能使用 substr() 因为路径可能不同,例如如果末尾没有参数(“%1”)。

如何一次性提取路径并设置静态变量?

最佳答案

为您的类使用静态构造函数,并在那里完成字符串操作的所有工作。

class YourClass
{
    public static string acrobatPath;
    // This static constructor will be called before first access to your type.
    static YourClass()
    {
        acrobatPath = Registry.GetValue(@"HKEY_CLASSES_ROOT\Applications\AcroRD32.exe\shell\Read\command", "", 0).ToString();
        string[] split = new string[2];
        split = acrobatPath.Split('"');
        // mask path with ""
        acrobatPath = "\"" + split[1] + "\""; //get only path
    }
}

关于C# 从注册表中获取不带参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308308/

相关文章:

c# - SqlDataSource UpdateCommand 被调用两次

c# - 无法匹配字符串中的字母和字母数字词

c# - 如何使用 Open XML SDK(XLSX) 在 Excel 中创建数据透视表

c - 在 C 中重新声明静态变量......从来没有发生过?

c++ - Linux 的注册表等效项是什么?

c# - 将 ssl 添加到 webapi...也添加到客户端?

C++ 静态数组

Java加减法用钱

c++ - Windows 内核模式驱动程序是否有等效的 RegQueryInfoKey?

windows - 如何更改windows系统默认的最大化窗口大小?