Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C#] Problema con modifica registro di sistema

    ciao a tutti!

    ho un problema con un programmino che sto facendo che mi semplificherebbe la vita.
    allora, ogni tanto il nostro gestionale si blocca, e l'assistenza mi ha detto che devo impostare un valore vuoto in due chiavi di registro.
    allora volermo crearmi un piccolo eseguibile in C# che esegua questa operazione.
    in questo modo, quando non sono presente in ufficio, lo può fare anche qualcun'altro.
    stavo facendo una prova banale sul mio pc, lanciando questo da visual studio:
    codice:
    using Microsoft.Win32;
    using System;
    
    namespace CleanC4B
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    RegistryKey regKey;
                    if (Environment.Is64BitOperatingSystem)
                    {
                        regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                    }
                    else
                    {
                        regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                    }
                    String value = regKey.OpenSubKey(@"SOFTWARE\7-Zip", true).GetValue("TEST").ToString();
                    if (!String.IsNullOrEmpty(value))
                    {
                        regKey.SetValue("TEST", "");
                        Console.WriteLine("Chiave modificata con successo");
                    }
                    else
                    {
                        Console.WriteLine("La chiave non esiste");
                    }
                    regKey.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
    ho creato un valore di test apposito per non fare danni.
    però mi esce questo messaggio:
    codice:
    Accesso al Resgistro di sistema non consentito.
    il mio utente è amministratore!
    prima di testarlo sul server volevo risolvere, in modo da non avere problemi dopo.
    come posso fare??

    PS: lo so che la soluzione è allucinante, perchè se succede e non ci sono io, non lavora più nessuno.
    però purtroppo è così, quindi possiamo anche non commentare questa tristezza

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Ciao,
    aggiungi un manifesto alla tua applicazione.
    Da Visual Studio:
    Aggiungi nuovo elemento-> file manifesto applicazione.
    Poi lo apri e sostituisci il nodo con quello più appropriato (dentro il file creato da VS trovi informazioni) al tuo caso.
    codice:
    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    ecc..

  3. #3
    ciao!

    ho messo il manifest così e adesso funziona, nel senso che il programma viene lanciato:
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />-->
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
        </application>
      </compatibility>
    </assembly>
    ma in verità la chiave non viene modificata!
    questo il codice:
    codice:
            static void Main()
            {
                try
                {
                    RegistryKey regKey;
                    if (Environment.Is64BitOperatingSystem)
                    {
                        regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                    }
                    else
                    {
                        regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                    }
                    String value = regKey.OpenSubKey(@"SOFTWARE\7-Zip", true).GetValue("TEST").ToString();
                    if (!String.IsNullOrEmpty(value))
                    {
                        Console.WriteLine(value);
                        regKey.SetValue("TEST", " ");
                        Console.WriteLine("Chiave modificata con successo");
                    }
                    else
                    {
                        Console.WriteLine("La chiave non esiste");
                    }
                    regKey.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.ReadLine();
            }
    arrivo a Chiave modificata con successo, ma rimane sempre uguale!

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Sicuro che il percorso sia giusto? tieni presente che la chiave si aggiorna (intendo visivamente dentro la finestra del registro di sistema) solo quando la apri, eventualmente non basarti su quello che si vede come valore nella lista delle chiavi, aprila per controllare o aggiorna il ramo.

  5. #5
    ho fatto qualche modifica ed ha funzionato.

    non il codice sotto mano, ma le modifiche fatte erano veramente stupide.
    quindi probabilmente avevo fatto un errore che poi ho corretto per sbaglio.

    grazie!!

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Figurati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.