「usingステートメント」内のパラメーターとして関数にコードを渡す

CrownFord

このコードは私と一緒にうまく機能します:

    [DllImport("advapi32.dll", SetLastError = true)]
    public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

    [DllImport("kernel32.dll")]
    public static extern bool CloseHandle(IntPtr token);

enum LogonType
    {
        Interactive = 2,
        Network = 3,
        Batch = 4,
        Service = 5,
        Unlock = 7,
        NetworkClearText = 8,
        NewCredentials = 9
    }
    enum LogonProvider
    {
        Default = 0,
        WinNT35 = 1,
        WinNT40 = 2,
        WinNT50 = 3
    }

private void Button1_Click()
    { 
        IntPtr token = IntPtr.Zero;
        LogonUser("Administrator",
                  "192.168.1.244",
                  "PassWord",
                  (int)LogonType.NewCredentials,
                  (int)LogonProvider.WinNT50,
                  ref token);
        using (WindowsImpersonationContext context = WindowsIdentity.Impersonate(token))
        {
    CloseHandle(token);
    /*
    Code_of_Do_Something
    */
    }
}

しかし...これは、偽装を行う必要があるたびに、「Button1_Click()」内の最後のコードを繰り返す必要があることを意味します(リモートマシン=サーバーで何かを行う)。だから私の質問:このイラストのようなことをすることは可能ですか?:ここに画像の説明を入力してください

ジェイコブ・クラル

はい、パラメータとしてコードを渡すことは可能です。しかし、ラムダを使用せずに問題を解決しましょう。

private void Button1_Click()
{
    using(GetImpersonationContext())
    {
        /* code here */
    } 
}
private WindowsImpersonationContext GetImpersonationContext()
{
    IntPtr token = IntPtr.Zero;
    LogonUser("Administrator",
              "192.168.1.244",
              "PassWord",
              (int)LogonType.NewCredentials,
              (int)LogonProvider.WinNT50,
              ref token);

    WindowsImpersonationContext context = WindowsIdentity.Impersonate(token);
    CloseHandle(token);
    return context;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クラスコンストラクターの関数パラメーターとして配列を渡す

分類Dev

テンプレートクラス/構造体のメンバー関数アドレスを関数パラメーターとして渡す

分類Dev

caseステートメント内で出力を生成するためのパラメーターとして渡すテーブル値関数

分類Dev

ドロップダウンリストの値をパラメーターとして関数に渡す方法

分類Dev

子スコープからコントローラー内の関数にパラメーターを渡す

分類Dev

コンテキストプロバイダーのパラメーターを使用して関数を渡す

分類Dev

コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

分類Dev

コマンドレットをパラメーターとして関数に渡します

分類Dev

関数パラメーターとして抽象クラスコンストラクターを渡す

分類Dev

php関数内にパラメーターを使用してifステートメントを配置しますか?

分類Dev

メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

分類Dev

Ballerinaの関数にパラメーターとしてエンドポイントを渡す方法

分類Dev

テンプレートパラメータとして関数を渡す

分類Dev

PySpark内のファイル間でパラメーターとしてsparkコンテキストを渡す

分類Dev

コントローラーのPOSTメソッドにパラメーターとしてNullを渡す

分類Dev

quosureを使用してdplyrの関数パラメーターとしてフィルターステートメントを渡す方法

分類Dev

個々の関数パラメーターとしてリストを渡す

分類Dev

コンポーネントをパラメーターとして関数に渡すReact

分類Dev

AngularJSテンプレート内の関数にパラメーターを渡します

分類Dev

テンプレートパラメータとしてメンバー関数ポインタを渡す

分類Dev

静的メンバー関数をテンプレートパラメーターとして渡す

分類Dev

デフォルトのパラメーターを持つ関数をテンプレート化されたコンストラクターに渡して、ラムダを使用してstd :: function <void()>として保存しないのはなぜですか?

分類Dev

goのifステートメントのパラメーターとして関数を使用する

分類Dev

Pythonの関数のパラメーターとして入力ステートメントを使用する

分類Dev

テンプレートをパラメーターとして関数に渡す方法

分類Dev

関数テンプレートをC ++のパラメーターとして渡す

分類Dev

COUNTIF関数のパラメーターとしてIFステートメントを使用できますか?

分類Dev

リストの要素をパラメーターとして変数引数を持つ関数に渡す

分類Dev

バリアントをコンストラクターパラメーターまたは関数の引数として渡す方法

Related 関連記事

  1. 1

    クラスコンストラクターの関数パラメーターとして配列を渡す

  2. 2

    テンプレートクラス/構造体のメンバー関数アドレスを関数パラメーターとして渡す

  3. 3

    caseステートメント内で出力を生成するためのパラメーターとして渡すテーブル値関数

  4. 4

    ドロップダウンリストの値をパラメーターとして関数に渡す方法

  5. 5

    子スコープからコントローラー内の関数にパラメーターを渡す

  6. 6

    コンテキストプロバイダーのパラメーターを使用して関数を渡す

  7. 7

    コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

  8. 8

    コマンドレットをパラメーターとして関数に渡します

  9. 9

    関数パラメーターとして抽象クラスコンストラクターを渡す

  10. 10

    php関数内にパラメーターを使用してifステートメントを配置しますか?

  11. 11

    メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

  12. 12

    Ballerinaの関数にパラメーターとしてエンドポイントを渡す方法

  13. 13

    テンプレートパラメータとして関数を渡す

  14. 14

    PySpark内のファイル間でパラメーターとしてsparkコンテキストを渡す

  15. 15

    コントローラーのPOSTメソッドにパラメーターとしてNullを渡す

  16. 16

    quosureを使用してdplyrの関数パラメーターとしてフィルターステートメントを渡す方法

  17. 17

    個々の関数パラメーターとしてリストを渡す

  18. 18

    コンポーネントをパラメーターとして関数に渡すReact

  19. 19

    AngularJSテンプレート内の関数にパラメーターを渡します

  20. 20

    テンプレートパラメータとしてメンバー関数ポインタを渡す

  21. 21

    静的メンバー関数をテンプレートパラメーターとして渡す

  22. 22

    デフォルトのパラメーターを持つ関数をテンプレート化されたコンストラクターに渡して、ラムダを使用してstd :: function <void()>として保存しないのはなぜですか?

  23. 23

    goのifステートメントのパラメーターとして関数を使用する

  24. 24

    Pythonの関数のパラメーターとして入力ステートメントを使用する

  25. 25

    テンプレートをパラメーターとして関数に渡す方法

  26. 26

    関数テンプレートをC ++のパラメーターとして渡す

  27. 27

    COUNTIF関数のパラメーターとしてIFステートメントを使用できますか?

  28. 28

    リストの要素をパラメーターとして変数引数を持つ関数に渡す

  29. 29

    バリアントをコンストラクターパラメーターまたは関数の引数として渡す方法

ホットタグ

アーカイブ