mirror of https://github.com/BOINC/boinc.git
144 lines
3.7 KiB
C++
144 lines
3.7 KiB
C++
/*++
|
|
|
|
DCOM Permission Configuration Sample
|
|
Copyright (c) 1996, Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
wrappers.cpp
|
|
|
|
Abstract:
|
|
|
|
Wrappers for low-level security and registry functions
|
|
|
|
Author:
|
|
|
|
Michael Nelson
|
|
|
|
Environment:
|
|
|
|
Windows NT
|
|
|
|
--*/
|
|
|
|
#include "stdafx.h"
|
|
#include "ntsecapi.h"
|
|
#include "dcomperm.h"
|
|
|
|
DWORD
|
|
ListDefaultAccessACL()
|
|
{
|
|
return ListNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultAccessPermission"));
|
|
}
|
|
|
|
DWORD
|
|
ListDefaultLaunchACL()
|
|
{
|
|
return ListNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultLaunchPermission"));
|
|
}
|
|
|
|
DWORD
|
|
ListAppIDAccessACL (
|
|
LPTSTR AppID
|
|
)
|
|
{
|
|
TCHAR keyName [256];
|
|
|
|
if (AppID [0] == '{')
|
|
wsprintf (keyName, TEXT("APPID\\%s"), AppID); else
|
|
wsprintf (keyName, TEXT("APPID\\{%s}"), AppID);
|
|
|
|
return ListNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("AccessPermission"));
|
|
}
|
|
|
|
DWORD
|
|
ListAppIDLaunchACL (
|
|
LPTSTR AppID
|
|
)
|
|
{
|
|
TCHAR keyName [256];
|
|
|
|
if (AppID [0] == '{')
|
|
wsprintf (keyName, TEXT("APPID\\%s"), AppID); else
|
|
wsprintf (keyName, TEXT("APPID\\{%s}"), AppID);
|
|
|
|
return ListNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("LaunchPermission"));
|
|
}
|
|
|
|
DWORD
|
|
ChangeDefaultAccessACL (
|
|
LPTSTR Principal,
|
|
BOOL SetPrincipal,
|
|
BOOL Permit
|
|
)
|
|
{
|
|
if (SetPrincipal)
|
|
{
|
|
RemovePrincipalFromNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultAccessPermission"), Principal);
|
|
return AddPrincipalToNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultAccessPermission"), Principal, Permit);
|
|
} else
|
|
return RemovePrincipalFromNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultAccessPermission"), Principal);
|
|
}
|
|
|
|
DWORD
|
|
ChangeDefaultLaunchACL (
|
|
LPTSTR Principal,
|
|
BOOL SetPrincipal,
|
|
BOOL Permit
|
|
)
|
|
{
|
|
if (SetPrincipal)
|
|
{
|
|
RemovePrincipalFromNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultLaunchPermission"), Principal);
|
|
return AddPrincipalToNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultLaunchPermission"), Principal, Permit);
|
|
} else
|
|
return RemovePrincipalFromNamedValueSD (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Ole"), TEXT("DefaultLaunchPermission"), Principal);
|
|
}
|
|
|
|
DWORD
|
|
ChangeAppIDAccessACL (
|
|
LPTSTR AppID,
|
|
LPTSTR Principal,
|
|
BOOL SetPrincipal,
|
|
BOOL Permit
|
|
)
|
|
{
|
|
TCHAR keyName [256];
|
|
|
|
if (AppID [0] == '{')
|
|
wsprintf (keyName, TEXT("APPID\\%s"), AppID);
|
|
else
|
|
wsprintf (keyName, TEXT("APPID\\{%s}"), AppID);
|
|
|
|
if (SetPrincipal)
|
|
{
|
|
RemovePrincipalFromNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("AccessPermission"), Principal);
|
|
return AddPrincipalToNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("AccessPermission"), Principal, Permit);
|
|
} else
|
|
return RemovePrincipalFromNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("AccessPermission"), Principal);
|
|
}
|
|
|
|
DWORD
|
|
ChangeAppIDLaunchACL (
|
|
LPTSTR AppID,
|
|
LPTSTR Principal,
|
|
BOOL SetPrincipal,
|
|
BOOL Permit
|
|
)
|
|
{
|
|
TCHAR keyName [256];
|
|
|
|
if (AppID [0] == '{')
|
|
wsprintf (keyName, TEXT("APPID\\%s"), AppID);
|
|
else
|
|
wsprintf (keyName, TEXT("APPID\\{%s}"), AppID);
|
|
|
|
if (SetPrincipal)
|
|
{
|
|
RemovePrincipalFromNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("LaunchPermission"), Principal);
|
|
return AddPrincipalToNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("LaunchPermission"), Principal, Permit);
|
|
} else
|
|
return RemovePrincipalFromNamedValueSD (HKEY_CLASSES_ROOT, keyName, TEXT("LaunchPermission"), Principal);
|
|
}
|
|
|