現在のユーザー以外のユーザーのレジストリ値を変更または編集する方法はありますか? 私はその他のユーザーの資格情報を知っています。他のユーザーのレジストリキーを編集する
答えて
ユーザーを偽装して、その現在のコンテキストのレジストリを変更することができます。ここではC#と偽装上のリソースのカップルです:
何がやりたいことは、このような何か(擬似)である:
using(var impersonation = new Impersonate(username,password))
{
ChangeRegistry(keys, values);
}
そして、偽装が取り消された場合は、実行中のユーザーを再び使用して戻ります。 Here is an example implementationは、前述の疑似実例のように動作するIDisposableとhere is another exampleを実装する偽装クラスです。レジストリ値を変更する方法について
var registry = Registry.CurrentUser;
var key =
registry.OpenSubKey(
@"HKEY_CURRENT_USER\Some\Path\That\You\Want\ToChange", true);
key.SetValue(null, "");
Registry.CurrentUser.Flush();
更新
ですから、HKCU
にアクセスするために何をする必要があるかあなたはまた、ユーザープロファイルをロードする必要があるということです。これは、LoadUserProfile
と呼ばれる別のWin32メソッドを呼び出すことによって行われます。あなたが使用できるcomplete example hereがありますが、ここで重要なビットを含めるつもりです。
まず、あなたがこのようなWin32の方法含める必要があります。あなたは次のことを行う必要があり、ブロックを使用して、偽装インサイド
[DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LoadUserProfile(IntPtr hToken,
ref ProfileInfo lpProfileInfo);
[DllImport("userenv.dll", CallingConvention = CallingConvention.Winapi,
SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool UnloadUserProfile(IntPtr hToken,
IntPtr lpProfileInfo);
を:
ProfileInfo profileInfo = new ProfileInfo();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.lpUserName = userName;
profileInfo.dwFlags = 1;
Boolean loadSuccess = LoadUserProfile(tokenDuplicate, ref profileInfo);
そして、この後に次のことができるようにすべきですHKCU
にアクセスしてください。完了したら、UnloadUserProfile(tokenDuplicate, profileInfo.hProfile);
を使用してプロファイルをアンロードする必要があります。
2つのオプションがあります。 Filip Ekbergの方が優れていることが証明されている場合は、そのユーザーを偽装することができます。または
HKCUは、HKEY_USERS
のキーのいずれかのシンボリックリンクに過ぎません。そのユーザーのSIDを知っていれば、そのユーザーのSIDを見つけることができます。
var account = new NTAccount("userName");
var identifier = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
var sid = identifier.Value;
より良いオプションは、偽装することです。 2番目のオプションは、ユーザーの資格情報がわからない場合にはより効果的です。欠点は、他人のアカウントに書き込むために管理者権限が必要になることです。
偽装は機能しませんでしたが、sidは便利ですが、UACがオフで、私は管理者ですが、権限のないアクセス例外が発生しました。 –
@MSS、アクセス権の昇格を試みてください。 –
それは働いた、私の間違いは私が読書の鍵を開いたことだった!間違い: var key = Registry.Users.OpenSubKey(sid);権利は:var key = Registry.Users.OpenSubKey(sid。true); !!! –
- 1. 他のユーザーのSharedPreferencesを編集する
- 2. 他のユーザーのExchangeアポイントの編集
- 3. TFSでプロジェクトの他のユーザーのアラートを編集する
- 4. 特定のユーザーのレジストリキーをプログラムによって編集するにはどうすればよいですか?
- 5. 他のユーザーが編集している場合にページ/エンティティを編集します
- 6. php - ユーザーのプロフィールページを編集する
- 7. レジストリキーを編集するための管理者アカウントを偽装する(C#)
- 8. Wordpressのテーマを他のユーザーが編集できるようにする
- 9. 複数のユーザー編集エディタ
- 10. ユーザー編集プロフィールのトラブル
- 11. Vimの/他のエディタの一括編集
- 12. MVC3ユーザー名を編集する(
- 13. OrcaでMSIを編集してインストール時にレジストリキーを追加する
- 14. Magentoのバックエンドのエラー:[編集]ユーザー
- 15. 他人のモジュールを編集するための適切なプロトコル
- 16. twiki管理者の編集ページビューとApacheユーザーの編集可能ページの表示
- 17. ユーザー編集時のCakePHP isUnique検証
- 18. SharePoint 2010 - ユーザー情報の編集
- 19. ユーザー編集のテキストフィールドをiOSの.jsファイルに保存する
- 20. ユーザーがjavascriptを編集しました
- 21. Ext JSのテキストフィールドのプログラム編集ではなく、ユーザーの編集をリッスンする方法は?
- 22. ADFの編集フォームを編集
- 23. Devise、OmniAuth&Facebook - ユーザーにパスワードの編集を許可する方法
- 24. ユーザーが編集したテキストエリアからのデータを管理する
- 25. Rails、ウィンドウ内のページの編集を編集する
- 26. 排他的にチェックアウトされているファイルを編集する
- 27. fogbugzリストビューのステータス(およびその他のフィールド)を編集
- 28. Rails 3.1のみのユーザーは、プロフィールを編集できます
- 29. WPFユーザー編集可能な設定ファイル
- 30. Wordpress:なぜ私のユーザーが他の作者の投稿を編集できないのですか?
ありがとうございますが、動作しませんでした。それは、偽装されたユーザーではなく、現在のユーザーのレジストリを変更しました。 –
偽装が成立したことは確かですか?あなたは現在のユーザーIDを試して印刷し、本当に誰であるかを見ることができます。また、このASP.NETアプリケーションまたはWindowsアプリケーションもありますか? Webアプリケーションの場合は、偽装を許可する必要があります。 –
いいえ、WPFアプリです。 using(ImpersonatedUser = new ImpersonatedUser( "aaa"、Environment.MachineName、 "1")) { Registry.CurrentUser。CreateSubKey( "TMP10"); Registry.CurrentUser.Flush(); } これは現在のユーザーにキーを作成しましたが、 'aaa'にはありません:( –