@@ -330,6 +330,9 @@ private object GetValueInRegistryView(string keyName, string valueName, out Regi
330330 }
331331
332332 private void SetValueInRegistryView ( string keyName , string valueName , object value , RegistryValueKind valueKind , RegistryView registryView ) {
333+ // save this before converting to Base64 or Array
334+ object _value = value ;
335+
333336 switch ( valueKind ) {
334337 case RegistryValueKind . Binary :
335338 if ( value is string binaryValue ) {
@@ -356,13 +359,14 @@ private void SetValueInRegistryView(string keyName, string valueName, object val
356359 // if the value already exists and is an exact string match, don't worry about it
357360 // (this is mainly to deal with permissions issues)
358361 try {
359- object _value = GetValueInRegistryView ( keyName , valueName , out RegistryValueKind ? _valueKind , registryView ) ;
362+ if ( _value is string valueString ) {
363+ _value = GetValueInRegistryView ( keyName , valueName , out RegistryValueKind ? _valueKind , registryView ) ;
360364
361- if ( valueKind == _valueKind ) {
362- if ( value is string valueString
363- && _value is string _valueString ) {
364- if ( valueString . Equals ( _valueString , StringComparison . Ordinal ) ) {
365- return ;
365+ if ( valueKind == _valueKind ) {
366+ if ( _value is string _valueString ) {
367+ if ( valueString . Equals ( _valueString , StringComparison . Ordinal ) ) {
368+ return ;
369+ }
366370 }
367371 }
368372 }
0 commit comments