2

Sharepoint に関連する偽装シナリオでは、別のプロセスでいくつかのコードを実行する必要があります (プロセスは特定のユーザーのコンテキストで実行されます)。別のアプリケーションを起動したくありません。基本的には、メソッドだけで「run as」を実行したいのです。

4

3 に答える 3

3

私はこれを自分で試したことはありませんが、これはうまくいくようです。

偽装されたメソッドが完了するまでブロックしても問題ない場合は、動作するはずです。したがって、コードは次のようになります。

...
WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);
context.Enter();

Results res = MyImpersonatedMethod(data);

context.Leave();
...

お役に立てれば。

于 2008-11-20T15:03:45.520 に答える
1

Process.Start メソッドには、適切なユーザー、パスワード、およびドメインがあれば、プロセスを開始するためのオーバーロードがあります。

やりたいことは、ProcessStartInfo オブジェクトを作成し、プロセスの開始時に適切な UserName と Password を指定することです。したがって、次のようなことができます。

Dim psiNewProcess As New ProcessStartInfo("Notepad.exe")

psiNewProcess.UserName = "MyUserName"
psiNewProcess.Password = "MyPassword"

Process.Start(psiNewProcess)

プロジェクトにまだインポートされていない場合、Process は System.Diagnostics 名前空間にあります。

EDIT:パスワードフィールドは実際にはSecureStringタイプのオブジェクトであるため、MSDNは次のように値を入力することを提案しています:

Dim instance As ProcessStartInfo
Dim value As SecureString

value = instance.Password

instance.Password = value
于 2008-11-20T15:15:34.963 に答える
1

ただし、「別のプロセスでコードを実行する」=「別のアプリケーションを起動する」。

つまり、単一のプロセスを起動してから、特定のメソッドを実行するように要求することができます...しかし、それがあなたが望むものかどうかは明らかではありません.

于 2008-11-20T14:54:58.937 に答える