[英]How to convert IntPtr to SafeHandle?
我有C#Windows服務類:
class MyService : ServiceBase
{
private void InitializeComponent() {
//some other code ...
SafeHandle sHandle = this.ServiceHandle; // I want to do this but this fails.
SetServiceObjectSecurity(sHandle, secInfo, binaryDescriptor);
//some more code ...
}
}
如何將IntPtr(如this.ServiceHandle)轉換為“ System.Runtime.InteropServices.SafeHandle”? 這樣我就可以在函數調用“ SetServiceObjectSecurity()”中使用它? 我的最終目的是授予管理員對該服務的許可。
您是否嘗試過使用SafeHandle.SetHandle(IntPtr handle)
,如此處https://msdn.microsoft.com/de-de/library/system.runtime.interopservices.safehandle.sethandle(v=vs.110).aspx所述 ,請參見那對你有用嗎?
編輯:由於SafeHandle.SetHandle(IntPtr handle)
是受保護的方法,您可以創建一個派生類,如下所示:
public class SafeHandleExtended : SafeHandle
{
public void SetHandleExtended(IntPtr handle)
{
this.SetHandle(handle);
}
// .. SafeHandle's abstract methods etc. that you need to implement
}
盡管我尚未測試它的正確性,但是我不知道這是否可以按照您希望的方式工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.