2012-05-09 32 views
0

我們已經設置了一個小型庫(DLL),用於更新AD中的密碼。在我們的測試應用程序中測試這個應用程序時,它工作得很好。但是,一旦我們開始在另一個應用程序中使用該庫,當嘗試更改密碼時,我們會收到訪問被拒絕錯誤。以編程方式在AD中更改密碼時的訪問被拒絕

當我們調用任何其他函數時,比如簡單查找來查看用戶是否存在的函數,一切正常。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, TargetDomainServer, TargetDomainContainer, TargetDomainUser, TargetDomainPassword); 
    UserPrincipalExt user = UserPrincipalExt.FindByIdentity(ctx, userLogonName); 
    user.SetPassword(userPassword); 

關於我在做什麼錯的任何想法?

+0

您的測試應用程序可能以管理員身份運行。要麼是因爲它是從IDE運行的,要麼是因爲它具有'requestedExecutionLevel'清單。 – kichik

+0

我在所有情況下都使用同一帳戶運行此解決方案。 – Tys

+0

在Windows Vista和7上,這並不意味着進程未以管理員身份運行。標有'requestedExecutionLevel'的可執行文件有自動標高。嘗試通過右鍵單擊並選擇它來以管理員身份運行測試應用程序。 – kichik

回答

1

您的測試應用程序可能以管理員身份運行。要麼是因爲它是從IDE運行的,要麼是因爲它具有requestedExecutionLevel的清單。

在Windows Vista和7上,以普通用戶身份登錄時運行應用程序並不意味着該進程沒有以管理員身份運行。標有requestedExecutionLevel的可執行文件有自動標高。嘗試通過右鍵單擊並選擇它來以管理員身份運行測試應用程序。

也有自動標高,沒有任何刻意的可執行標記。 Windows有已知安裝程序的內部列表。它實際上通過版本信息和二進制簽名來識別其中的一些,並嘗試以管理員身份運行它們,以便安裝實際上取得成功。 IIRC,另一種識別方法是文件名。名爲setup.exe的可執行文件也被提升(只要requestedExecutionLevel不會覆蓋它)。