2011-07-05 21 views
1

私は別のWindowsユーザーIDで実行するために私のコードを偽装する必要があります。現在、私はいくつかのネイティブライブラリを呼び出すWebから入手したコードを使用しています。Windows 7でC#コードを偽装する

コードの目的は、ファイルサーバーのユーザーディレクトリのアクセス許可のアクセス許可を変更することです。

私は自分のフォルダのアクセス許可を変更できますが、自分のフォルダのアクセス許可を変更して他のユーザーの資格情報を持っています。しかし、私は彼の偽装によって私のマシン上でコードを実行しています。

しかし、許可されていない例外が発生しています。

私が使用していたコードは次のとおりです。

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

私はこれは、Windows 7での作業やされていないことを確認していません。このような問題に直面した人はいますか?私は取得しています

例外:

Messagee:"{"Attempted to perform an unauthorized operation."}" 
stack trace: 
at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl) 
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext) 
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext) 
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections) 
at System.Security.AccessControl.FileSystemSecurity.Persist(String fullPath) 
at System.IO.Directory.SetAccessControl(String path, DirectorySecurity directorySecurity) 
at FolderAccessManager.Program.Main(String[] args) in 

あなたは、いくつかの解決策を共有してもらえ..?

+0

例外の詳細を教えてください。参考にしてください –

+0

例外メッセージでケースを編集しました。 – sbmandav

+0

なぜ 'runas'を使わないのですか? –

答えて

1

WindowsIdentity.Impersonateをご覧ください。そこに行く方法の例が表示されます。

+0

私は同じコードを使用しています...私が偽装しているユーザーには十分な特権がありません。 – sbmandav

1

ASP.NETでドメイン結合マシンを使用していますか?

私は、デフォルトのapppool IDで実行しているときに、このコードをasp.netアプリケーションで使用するという同じメッセージを得ました。 Apppoolユーザーを 'domain admin'権限を持つドメインユーザーに変更すると、この問題が解決されました(Windows 7も同様)。

関連する問題