レジストリエントリを読み取るカスタムアクションがあります。既にsession["UtillRegKey"]
がレジストリに登録されている場合は、printerIndex
が増えます。 問題は既にレジストリがあり、prnKey
は常にnullになります。私はレジストリを読むために必要な権限はないと思うが、設定した後でさえも結果は同じだった。そして、私はWindowsフォームアプリケーションを作成し、そこに同じ関数を追加して、期待どおりに動作します。カスタムアクションがレジストリキーにアクセスできません
誰でもこのprnKey = prnKey.OpenSubKey(registryPath, false);
がWIXカスタムアクションでnullを返す理由を説明できますか?どうすればこの問題を克服できますか?
[CustomAction]
public static ActionResult RegistryDetails(Session session)
{
try
{
string registryPath = session["UtillRegKey"];
int printerIndex = 1;
RegistryKey prnKey = Registry.LocalMachine;
prnKey = prnKey.OpenSubKey(registryPath, false);
if (null != prnKey)
{
global::System.Windows.Forms.MessageBox.Show("Not NUll");
List<string> subKeyList = new List<string>();
subKeyList.AddRange(prnKey.GetSubKeyNames());
while (subKeyList.Contains(printerIndex.ToString()))
{
printerIndex++;
}
}
string newRegistryPath = registryPath + "\\" + printerIndex.ToString();
session["UtillRegKey"] = newRegistryPath;
session["PrinterNo"] = printerIndex.ToString();
}
catch (Exception ex)
{
CurrentSession.Log(ex.Message);
Record exceptionRec = new Record(0);
exceptionRec[0] = "Errors -" + ex.StackTrace.ToString();
CurrentSession.Message(InstallMessage.Error, exceptionRec);
return ActionResult.Failure;
}
return ActionResult.Success;
}