Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kebijakan LSA menyediakan dua fungsi yang dapat Anda gunakan untuk mengatur dan mengambil data privat. Data ini disimpan sebagai string terenkripsi dalam registri. Misalnya, Anda dapat menggunakan fungsi-fungsi ini untuk menyimpan kata sandi akun server dan informasi sensitif lainnya.
Panggil fungsiLsaStorePrivateData untuk menyimpan dan mengenkripsi data privat. Seperti yang dijelaskan dalam Private Data Object, objek data privat mencakup tiga jenis khusus: lokal, global, dan mesin. Untuk membuat objek khusus, tambahkan awalan ke nama kunci yang diteruskan ke LsaStorePrivateData: "L$" untuk objek lokal, "G$" untuk objek global, dan "M$" untuk objek mesin. Jika Anda tidak membuat salah satu jenis khusus ini, Anda tidak perlu menentukan awalan nama kunci.
Untuk mengambil dan mendekode data privat yang disimpan sebelumnya, panggil LsaRetrievePrivateData. Perhatikan bahwa Anda tidak dapat mengambil objek data privat mesin; objek mesin hanya dapat diambil oleh sistem operasi.
Sebelum Anda dapat menyimpan atau mengambil data privat, aplikasi Anda harus mendapatkan gagang ke objek Kebijakan lokal, seperti yang ditunjukkan dalam membuka Penanganan Objek Kebijakan .
Contoh berikut membuat objek data privat lokal. Perhatikan bahwa fungsi InitLsaString mengonversi stringUnicode ke struktur LSA_UNICODE_STRING. Kode untuk fungsi ini ditampilkan dalam Menggunakan String LSA Unicode.
#include <windows.h>
#include <stdio.h>
BOOL CreatePrivateDataObject(LSA_HANDLE PolicyHandle)
{
NTSTATUS ntsResult;
LSA_UNICODE_STRING lucKeyName;
LSA_UNICODE_STRING lucPrivateData;
// The L$ prefix specifies a local private data object
WCHAR wszKeyName[] = L"L$MyPrivateKey";
WCHAR wszPrivateData[] = L"Something secret.";
// Initializing PLSA_UNICODE_STRING structures
if (!InitLsaString(&lucKeyName, wszKeyName))
{
wprintf(L"Failed InitLsaString\n");
return FALSE;
}
if (!InitLsaString(&lucPrivateData, wszPrivateData))
{
wprintf(L"Failed InitLsaString\n");
return FALSE;
}
// Store the private data.
ntsResult = LsaStorePrivateData(
PolicyHandle, // handle to a Policy object
&lucKeyName, // key to identify the data
&lucPrivateData // the private data
);
if (ntsResult != STATUS_SUCCESS)
{
wprintf(L"Store private object failed %lu\n",
LsaNtStatusToWinError(ntsResult));
return FALSE;
}
return TRUE;
}
Nota
Data yang disimpan oleh fungsiLsaStorePrivateData tidak sepenuhnya dilindungi. Kuncinya, bagaimanapun, memiliki daftar kontrol akses diskresi (DACL) yang hanya memungkinkan pembuat dan administrator untuk membaca data.