Frage

Ich versuche, einen Registrierungsschlüssel zu ändern, die ich habe Kontrollen gesagt, ob Schreibcache auf bestimmte Festplatten aktiviert ist. Der Schlüssel sollte sein: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\IDE\<DiskName>\<SerialNo>\Device Parameters\Disk\UserWriteCacheSetting

Allerdings halte ich Probleme haben, wenn versucht, diesen Schlüssel zu erstellen (wie es standardmäßig nicht vorhanden ist). Wenn ich versuche, die ...\Device Parameters\Disk\ mit Schreibzugriff ich einen Security Fehler erhalten zu öffnen; „Angeforderte Registrierungszugriff ist nicht erlaubt“. Jetzt habe ich die <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> Flagge meine Manifest-Datei hinzugefügt, so wie ich Admin-Zugang zu gewährleisten, aber ich habe immer noch kein Glück.

Irgendwelche Ideen wäre toll!

    static void Main(string[] args)
    {
        RegistryKey myKey = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Enum\\IDE\\");

        foreach (string driveManafacturer in myKey.GetSubKeyNames())
        {
            RegistryKey driveKey = myKey.OpenSubKey(driveManafacturer);
            foreach (string driveID in driveKey.GetSubKeyNames())
            {
                RegistryKey driveIDKey = driveKey.OpenSubKey(driveID, true);
                string driveType = (string)driveIDKey.GetValue("Class");
                if (driveType == "DiskDrive")
                {
                    RegistryKey tempKey = driveIDKey.OpenSubKey("Device Parameters\\Disk\\", true);
                    if (tempKey == null)
                    {
                        tempKey = driveIDKey.CreateSubKey("Device Parameters\\Disk\\");
                        tempKey.SetValue("UserWriteCacheSetting", 0x0);
                    }
                }
            }
        }

        return;
    }
War es hilfreich?

Lösung

Bearbeiten :. Die Idee über Teil Vertrauen entfernt ... es stellte sich heraus, dass es nichts mit dem Problem zu tun hatte

Ich habe versucht, den Code und bekam den gleichen Fehler - mit einigen Modifikationen funktioniert es:

RegistryKey myKey = Registry.LocalMachine.OpenSubKey( "SYSTEM\\CurrentControlSet\\Enum\\IDE\\" );

foreach( string driveManafacturer in myKey.GetSubKeyNames() )
{
  RegistryKey driveKey = myKey.OpenSubKey( driveManafacturer );

  foreach( string driveID in driveKey.GetSubKeyNames() )
  {
    RegistryKey subKey = driveKey.OpenSubKey( driveID );
    string driveType = (string)subKey.GetValue( "Class" );
    if( driveType == "DiskDrive" )
    {
      RegistryKey tempKey = subKey.OpenSubKey( "Device Parameters", true );
      RegistryKey tempKey2 = tempKey.OpenSubKey( "Disk" );
      if( tempKey2 == null )
      {
        tempKey2 = tempKey.CreateSubKey( "Disk" );
        tempKey2.SetValue( "UserWriteCacheSetting", 0x0 );
      }
    }
  }
}

Andere Tipps

Ich habe nicht einen besseren Vorschlag. Versuchen Sie Registrierungseintrag von Hand zu erstellen, nur um sicherzustellen, dass Sie können. Dann stellen Sie sicher, dass die Anwendung mit Ihren Anmeldeinformationen ausgeführt wird. Nur das Berechtigungsproblem zu beseitigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top