Makale numarası: 842795 - Son Gözden Geçirme: 29 Mart 2007 Perşembe - Gözden geçirme: 3.3

Özel bir olay günlüğüne oluşturmaya çalıştığınızda "kayıt defteri erişimi verilmediğinden istenen" hata iletisi alıyorsunuz

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Bilgisayarı normal bir kullanıcı olarak oturum açtıysanız ve olayları kaydetmek için özel bir olay günlüğü oluşturmak için Microsoft Visual Studio. NET'i kullanmaya çalışırsanız, aşağıdaki hata iletisini alabilirsiniz:
Mscorlib.dll ' 'System.Security.SecurityException' türünde işlenmeyen bir özel durum oluştu
Ek bilgi: kayıt defteri erişimi verilmez istendi.

Neden

Bu sorun, oturum açmak için kullandığınız kullanıcı hesabının yeterli izinlere sahip olmadığı için oluşur.

Özel bir olay günlüğü oluşturmak için EventLog.CreateEventSource() yöntemi çağrısı ilk kez özel olay günlük girişini aşağıdaki kayıt defteri alt anahtarının altında oluşturulur:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
Bu alt anahtar girdisini oluşturmak için <a0></a0>, yazma izninizin olması gerekir. Ancak, normal bir kullanıcı hesabının yazma iznine sahip değil. Bu nedenle, "Belirtiler" bölümünde açıklanan hata iletisini alırsınız.

Pratik Çözüm

Önemli Bu bölüm, yöntem veya görev kayıt defterini nasıl söyleyin adımları içerir. Ancak kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Bu nedenle, bu adımları dikkatlice uyguladığınızdan emin olun. Ek koruma için, kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
322756  (http://support.microsoft.com/kb/322756/ ) Windows'da kayıt defterini yedekleme ve geri yükleme

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın:
  • Özel bir olay günlüğünü oluşturma izni verin.
  • Özel olay günlüğüne bir yönetici olarak yükleyin.

Özel bir olay günlüğünü oluşturma izni verin.

  1. Bilgisayarda bir yönetici olarak oturum açın.
  2. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, kutusuna regedit yazın ve Tamam ' ı tıklatın. Kayıt Defteri Düzenleyicisi penceresi görüntülenir.
  3. Aşağıdaki kayıt defteri alt anahtarını bulun:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
  4. Olay günlüğü ' ı sağ tıklatın ve izinler ' i tıklatın. Olay günlüğü için izinler iletişim kutusu görüntülenir.
  5. Gelişmiş ' i tıklatın. <a0>Olay günlüğü için Gelişmiş güvenlik ayarları</a0> iletişim kutusu görüntülenir.
  6. Adı</a0> sütununda, kullanıcı grubu çift tıklatın. Olay günlüğü için izin girdisi iletişim kutusu görüntülenir.
  7. <a0>Değer Ayarla</a0> onay kutusunu seçin <a0>Alt anahtar oluştur</a0> onay kutusunu seçin ve Tamam ' ı tıklatın.
  8. Kayıt Defteri Düzenleyicisi'nden çıkın ve yönetici hesabından oturumu kapatın.
  9. Normal kullanıcı olarak bilgisayarda oturum açın.
  10. Visual Studio. NET'i kullanarak, özel bir olay günlüğü oluşturmayı deneyin ve sonra Visual Studio. NET'in yerleşik bir uygulama kullanarak, bu olay günlüğüne Yaz deneyin.

Özel olay günlüğüne bir yönetici olarak yükleyin.

  1. Bilgisayarda bir yönetici olarak oturum açın.
  2. Özel bir olay günlüğü ve bir olay günlüğü kaynağı oluşturmak için Visual Studio. NET'te CreateEventSource yöntemini kullanın.
  3. Yönetici hesabından oturumunuzu kapatın.
  4. Normal kullanıcı olarak bilgisayarda oturum açın.
  5. Özel olay günlüğüne giriş yazılamadı uygulamayı çalıştırın.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Normal bir kullanıcı hesabı oluşturun:
    1. Bilgisayarınızda yönetici olarak oturum açın.
    2. Bilgisayarım ' ı sağ tıklatın ve sonra Yönet ' i tıklatın. Bilgisayar Yönetimi penceresi görüntülenir.
    3. Sistem Araçları'nın altında Yerel Kullanıcılar ve gruplar'ı genişletin.
    4. Kullanıcılar ' ı sağ tıklatın ve sonra Yeni kullanıcı ' yı tıklatın. Yeni kullanıcı iletişim kutusunda görüntülenir.
    5. Kullanıcı adı kutusuna yeni hesabın adını yazın ve sonra da parola kutusuna hem de Parolayı Onayla ' tek bir parola yazın kutusunu.
    6. NET user gerekir bir sonraki oturum açışında parolasını değiştirmek, onay kutusunu seçin Parola her zaman geçerli olsun denetimi kutusunu ve sonra Oluştur ' u tıklatın.
    7. Yeni kullanıcı iletişim kutusunu kapatmak için Kapat ' ı tıklatın.
  2. Kullanıcının, hata ayıklayıcı kullanıcı grubuna ekleyin:
    1. Yerel Kullanıcılar ve gruplar'in altında kullanıcılar ' ı tıklatın.
    2. Ad sütununda Bilgisayar Yönetimi penceresinin sağ bölmesinde, yeni hesabın adını sağ tıklatın ve sonra da Properties ' i tıklatın. Yeni hesabın Özellikler iletişim kutusu görüntülenir.
    3. Üye sekmesini ve sonra Ekle ' yi tıklatın. <a0>Grupları Seç</a0> iletişim kutusu görüntülenir.
    4. Gelişmiş ' i tıklatın. Seçim grupları iletişim kutusu görüntülenir.
    5. Şimdi Bul ' u tıklatın. Kullanılabilir gruplar Grup Seç</a1> iletişim kutusunda görünür.
    6. Ad (RDN) sütununda, Hata ayıklama kullanıcıları tıklatın ve sonra Tamam ' ı tıklatın.
    7. Seçili gruplar iletişim kutusunda, <a3>Tamam</a3>'ı tıklatın.
    8. Yeni hesabın Özellikler iletişim kutusunda Tamam ' ı tıklatın.
    9. Yönetici hesabından oturumunuzu kapatın.
  3. Bir Windows uygulaması oluşturun:
    1. Oluşturduğunuz "Adım 1 - normal bir kullanıcı hesabı oluşturma" normal bir kullanıcı hesabını kullanarak bilgisayara oturum açın.
    2. Visual Studio .NET'i başlatın.
    3. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın. <a0>New Project</a0> iletişim kutusu görüntülenir.
    4. Project Types altında Visual C# Projects ' ı tıklatın.
    5. Şablonları altında tıklatın Windows uygulama.
    6. Adı kutusuna, bir projenin adını yazın ve Tamam ' ı tıklatın. Varsayılan olarak, Form1 formu görüntülenir.
    7. Form1 formunu sağ tıklatın ve sonra View Code. Form1.cs dosyası görüntülenir.
    8. Varolan kodu aşağıdaki kodla değiştirin: <a1>
      using System;
      using System.Drawing;
      using System.Collections;
      using System.ComponentModel;
      using System.Windows.Forms;
      using System.Data;
      using System.Diagnostics;
      
      namespace WindowsApplication1
      {
      	/// <summary>
      	/// Summary description for Form1.
      	/// </summary>
      	public class Form1 : System.Windows.Forms.Form
      	{
      		private System.Diagnostics.EventLog eventLog1;
      		private System.Windows.Forms.Button button1;
      		/// <summary>
      		/// Required designer variable.
      		/// </summary>
      		private System.ComponentModel.Container components = null;
      
      	
      
      
      		public Form1()
      		{
      			//
      			// Required for Windows Form Designer support
      			//
      			InitializeComponent();
      
      			if(!EventLog.SourceExists("Source1"))
      			{
      				EventLog.CreateEventSource("Source1","MyLog1");
      			}
      			eventLog1.Source = "Source1";
      			eventLog1.Log = "MyLog1";
      			//
      			// TODO: Add any constructor code after InitializeComponent call
      			//
      		}
      		
      		
      		
      		
      		/// <summary>
      		/// Clean up any resources being used.
      		/// </summary>
      		protected override void Dispose( bool disposing )
      		{
      			if( disposing )
      			{
      				if (components != null) 
      				{
      					components.Dispose();
      				}
      			}
      			base.Dispose( disposing );
      		}
      
      		#region Windows Form Designer generated code
      		/// <summary>
      		/// Required method for Designer support - do not modify
      		/// the contents of this method with the code editor.
      		/// </summary>
      		private void InitializeComponent()
      		{
      			this.eventLog1 = new System.Diagnostics.EventLog();
      			this.button1 = new System.Windows.Forms.Button();
      			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
      			this.SuspendLayout();
      			// 
      			// eventLog1
      			// 
      			this.eventLog1.SynchronizingObject = this;
      			// 
      			// button1
      			// 
      			this.button1.Location = new System.Drawing.Point(104, 104);
      			this.button1.Name = "button1";
      			this.button1.TabIndex = 0;
      			this.button1.Text = "button1";
      			this.button1.Click += new System.EventHandler(this.button1_Click);
      			// 
      			// Form1
      			// 
      			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      			this.ClientSize = new System.Drawing.Size(292, 273);
      			this.Controls.Add(this.button1);
      			this.Name = "Form1";
      			this.Text = "Form1";
      			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
      			this.ResumeLayout(false);
      
      		}
      		#endregion
      
      		/// <summary>
      		/// The main entry point for the application.
      		/// </summary>
      		[STAThread]
      		static void Main() 
      		{
      			Application.Run(new Form1());
      		}
      		
      		private void button1_Click(object sender, System.EventArgs e)
      		{
      			eventLog1.WriteEntry("The Button1 Is Clicked");
      		}
      	}
      }
      
    9. Form1.cs Kaydet dosyayı kaydetmek için Dosya menüsünden'ı tıklatın.
  4. Projeyi çalıştırın:
    1. Yapı) menüsünde tıklatın Build Solution.
    2. Projeyi çalıştırın. "Belirtiler" bölümünde açıklanan hata iletisini alabilirsiniz.
Not Güvenlik olay günlüğüne kayıt defteri alt anahtarına yazma izni için işletim sistemi olay günlüğü API düzeyinde uygulanır. Varsayılan olarak, özel bir olay günlüğü izin uygulama olay günlüğüne izinleri aynı.

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:
Oluşturma ve özel olay günlüklerini kaldırma
http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx)

Olay günlüklerine girişleri yazılıyor
http://msdn2.microsoft.com/en-us/library/k00ce235(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/k00ce235(vs.71).aspx)

Uygulama olay günlüğü girdilerine bir kaynak olarak ekleme
http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx)

Güvenlik günlüğünü Olay
http://msdn2.microsoft.com/en-us/library/aa363658.aspx (http://msdn2.microsoft.com/en-us/library/aa363658.aspx)
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
329291  (http://support.microsoft.com/kb/329291/ ) ASP.NET uygulamasının yeni OlayKaynağı olay günlüğüne yazmayı denediğinde "kayıt defteri erişimi verilmediğinden istenen" hata iletisi

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Anahtar Kelimeler: 
kbmt kbtshoot kberrmsg kbregistry kbpermissions kbeventlog kbaccounts kbprb KB842795 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:842795  (http://support.microsoft.com/kb/842795/en-us/ )