Index: base/accounts.cc |
diff --git a/base/accounts.cc b/base/accounts.cc |
deleted file mode 100644 |
index d196fb1c5cf3f3555d3e64e67fc6b85969c3e251..0000000000000000000000000000000000000000 |
--- a/base/accounts.cc |
+++ /dev/null |
@@ -1,123 +0,0 @@ |
-// Copyright 2004-2009 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
-// |
-// Enumeration of the user accounts on the PC. |
- |
-#include "omaha/base/accounts.h" |
- |
-#include <sddl.h> |
-#include "base/basictypes.h" |
-#include "omaha/base/debug.h" |
-#include "omaha/base/error.h" |
-#include "omaha/base/reg_key.h" |
- |
-namespace omaha { |
- |
-namespace accounts { |
- |
-const wchar_t kActiveProfilesKey[] = |
- L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList"; |
- |
-HRESULT GetAllUserSids(CSimpleArray<CString> *sid_array) { |
- ASSERT(sid_array, (L"")); |
- |
- RegKey key_profiles; |
- HRESULT hr = key_profiles.Open(HKEY_LOCAL_MACHINE, kActiveProfilesKey); |
- if (FAILED(hr)) { |
- return hr; |
- } |
- |
- sid_array->RemoveAll(); |
- |
- uint32 total_keys = key_profiles.GetSubkeyCount(); |
- |
- for (uint32 i = 0 ; i < total_keys ; ++i) { |
- CString possible_user_sid, name, domain; |
- SID_NAME_USE user_type; |
- |
- if (SUCCEEDED(key_profiles.GetSubkeyNameAt(i, &possible_user_sid))) { |
- if (SUCCEEDED(GetUserInfo(possible_user_sid, &name, |
- &domain, &user_type)) && |
- user_type == SidTypeUser) { |
- sid_array->Add(possible_user_sid); |
- } |
- } |
- } |
- |
- return hr; |
-} |
- |
-HRESULT GetUserInfo(const wchar_t *sid_str, CString *name, |
- CString *domain, SID_NAME_USE *user_type) { |
- ASSERT(sid_str, (L"")); |
- ASSERT(name, (L"")); |
- ASSERT(domain, (L"")); |
- ASSERT(user_type, (L"")); |
- |
- PSID sid = NULL; |
- HRESULT ret = E_FAIL; |
- if (ConvertStringSidToSid(sid_str, &sid)) { |
- DWORD name_size = 0, domain_size = 0; |
- if (!LookupAccountSid(NULL, sid, NULL, &name_size, NULL, |
- &domain_size, user_type) && |
- ERROR_INSUFFICIENT_BUFFER != GetLastError()) { |
- ret = GetCurError(); |
- LocalFree(sid); |
- return ret; |
- } |
- |
- ASSERT(name_size, (L"")); |
- ASSERT(domain_size, (L"")); |
- if (!domain_size || !name_size) { |
- LocalFree(sid); |
- return E_UNEXPECTED; |
- } |
- |
- wchar_t* c_name = new wchar_t[name_size]; |
- ASSERT(c_name, (L"")); |
- if (!c_name) { |
- LocalFree(sid); |
- return E_OUTOFMEMORY; |
- } |
- |
- wchar_t* c_domain = new wchar_t[domain_size]; |
- ASSERT(c_domain, (L"")); |
- if (!c_domain) { |
- delete[] c_name; |
- LocalFree(sid); |
- return E_OUTOFMEMORY; |
- } |
- |
- if (LookupAccountSid(NULL, sid, c_name, &name_size, c_domain, |
- &domain_size, user_type)) { |
- ret = S_OK; |
- name->SetString(c_name); |
- domain->SetString(c_domain); |
- } else { |
- ret = GetCurError(); |
- } |
- |
- delete[] c_name; |
- delete[] c_domain; |
- LocalFree(sid); |
- } |
- |
- return ret; |
-} |
- |
-} // namespace accounts |
- |
-} // namespace omaha |
- |