您可以使用模擬來以不同的用戶身份運行代碼。在CodeProject上有一個很好的模擬類,http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User。
只需在機器上創建一個新的管理員帳戶,即可進行自己想要的操作,將憑證存儲在應用程序設置的web.config中(如果您想要使用rijandael並使用代碼進行解密,請將其加密)
但從長期儲存總之,你使用它像這樣,
using (new Impersonator("myUsername", "myDomainname", "myPassword"))
{
//This code is running elevated as the specified user
}
//This code is reverted back to the previous user.
其實,我寫我自己的web.config的ConfigurationElement存儲憑據。它看起來像這樣,
public class CredentialConfigurationElement : ConfigurationElement
{
#region Properties
[ConfigurationProperty("userName", DefaultValue="", IsRequired=true)]
public string UserName
{
get { return (string)this["userName"];}
set { this["userName"] = value; }
}
[ConfigurationProperty("password", DefaultValue = "", IsRequired = true)]
public string Password
{
get { return (string)this["password"]; }
set { this["password"] = value; }
}
#endregion
#region Explicit Operators
public static implicit operator NetworkCredential(CredentialConfigurationElement value)
{
return new NetworkCredential(value.UserName, value.Password);
}
public static implicit operator CredentialConfigurationElement(NetworkCredential value)
{
return new CredentialConfigurationElement() { UserName = value.UserName, Password = value.Password };
}
#endregion
}
但是,要使用它,您需要創建一個Custom ConfigurationSection,這是一個從ConfigurationSection繼承的類,並將CredentialConfigurationElement作爲屬性公開。
E.g.您可以創建一個名爲CodeImpersonatorSection的新節:ConfigurationSection
並在此處將CredentialConfigurationElement公開爲名爲ImpersonationCredentials的屬性。
然後使用(CodeImpersonatorSection)WebConfigurationManager.GetSection(「/ yoursectionnamehere」);獲取配置實例。
有選擇地修改冒領類自動做到這一點,並改變它有一個靜態方法類似
Impersonator.RunUnderImpersonation(p => {
//This code is impersonating the configured user.
});
免費被高估了。如果您購買價值1000美元的解決方案,但可以節省數天的研究,編碼,調試和支持工作,這非常值得花費。 – 2014-09-02 14:13:17
不幸的是我不在財務決策部門,所以自由是唯一不幸的方法。 – anothershrubery 2014-09-02 14:32:38
或者你可以向決策者解釋這一點。 – 2014-09-02 15:01:02