2013-12-19 76 views
0

我正在爲KeePass構建一個C#插件,該插件一旦通過Web進行身份驗證就會創建一個密碼組。我的問題是,我似乎無法讓組關閉應用程序(在plugins Terminate()方法中刪除自己。有沒有人遇到過刪除KeePass的條目或組的問題?我可以完美地添加它們(並接收在我目前的終止()方法沒有錯誤。這是我到目前爲止所。任何幫助表示讚賞,謝謝。C#從keepass數據庫中刪除組

public override void Terminate() 
{ 
    // Remove event handlers for opening a database 
    m_host.MainWindow.FileOpened -= OnFileOpened; 

    PwGroup RootGroup = m_host.Database.RootGroup.FindCreateGroup("Test", false); 

    foreach(PwGroup group in RootGroup.Groups) 
    { 
     RootGroup.Groups.Remove(group); 

     group.DeleteAllObjects(m_host.Database); 

     PwDeletedObject pdo = new PwDeletedObject(group.Uuid, DateTime.Now); 
     m_host.Database.DeletedObjects.Add(pdo); 
    } 

    // Update the main window to reflect changes (only update from the root folder) 
    m_host.MainWindow.UpdateUI(false, null, true, m_host.Database.RootGroup, true, null, true); 
} 

回答

0

我想你錯過了應該適用你刪除一個.MergeIn聲明,至少這對我的單項作品。

private static bool DeleteKeePassEntry(PwDatabase pwDatabase, PwEntry pwEntry) 
    { 
     try 
     { 
      PwDeletedObject pwDeletedObject = new PwDeletedObject(pwEntry.Uuid, DateTime.Now); 
      pwDatabase.DeletedObjects.Add(pwDeletedObject); 
      pwDatabase.MergeIn(pwDatabase, PwMergeMethod.Synchronize); 
      pwDatabase.Save(new CoutLogger()); 
     } 
     catch (Exception e) 
     { 
      Log.UpdateLog(e.Message); 
      if (e.InnerException != null) 
       Log.UpdateLog(e.InnerException.Message); 
      return Global.ERROR; 
     } 
     /* success */ 
     return Global.OK; 
    }