簡體   English   中英

怎么把IntPtr轉換成SafeHandle?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM