2013-10-25 86 views
0

我的情況/問題的目標是我想將我的getValue的值設置爲註冊表中的目標。我對get/sets不太熟悉,所以任何幫助都很棒。讓我知道你是否需要別的東西。根據註冊表設置值

+0

一個提示,不要命名類與您的命名空間相同。 'Ironman' – EkoostikMartin

+0

我無法解密你真正要求的東西,但是屬性其實非常簡單...爲了從中獲得價值,你只需要'string KeyPath = this.keypath' ... to設置一個屬性,你可以做'this.TextOut =「輸出,喲!」'... –

回答

1

要獲取註冊表值,您可能會使用Registry.GetValue。你只需要使用上下文來設置輸出參數。

一個例子:

using System; 
using System.Activities; 
using Microsoft.Win32; 
using System.IO; 

public class GetRegistryValue : CodeActivity 
{ 
    [RequiredArgument] 
    public InArgument<string> KeyPath { get; set; } 
    public OutArgument<string> TextOut { get; set; } 

    protected override void Execute(CodeActivityContext context) 
    { 
     string keyPath = this.KeyPath.Get(context); 
     string keyName = Path.GetDirectoryName(keyPath); 
     string valueName = Path.GetFileName(keyPath); 
     object value = Registry.GetValue(keyName, valueName, ""); 
     context.SetValue(this.TextOut, value.ToString()); 
    } 
} 

這裏的keyPath是一樣的東西:HKEY_CURRENT_USER\Software\7-Zip\Path其中Path實際上是值名稱和HKEY_CURRENT_USER\Software\7-Zip是按鍵的名稱。 如果您想將註冊表值設置爲Registry.SetValue

+0

當使用Registry.SetValue時,我很努力地弄清楚在這裏'string keyPath = this .keypath.Set(context,???);' – Brandon

+0

@Brandon我不明白這個問題。任何setter方法的「value」參數將成爲您想要放入某個存儲位置的值。此外,大多數時間setter方法不會返回任何東西。 –

+0

那麼當我認爲需要一個setter方法來創建一個註冊表項。這是不正確的?我能在吸氣劑中做到這一點嗎? – Brandon