2016-08-23 107 views
1

我正在写一个Windows服务这将使用数据库使用系统配置文件名称。对于此功能,我有一个Postgres SQL Server如何找出Windows系统配置文件的名称?

我想创建trust认证为Windows 系统配置文件之前,我运行服务。

为此,我会跑会写的pg_hba.conf文件,如身份验证方法所需的信息,并与系统配置名创建角色的一些控制台应用程序。顺便说一句,Postgres可以识别其他语言符号是非常酷的(不知道它们是否全部)。

问题是我怎么能找到翻译Windows系统的配置文件的名字?原因在不同的语言每个Windows都有不同的系统配置文件名称:系统системаSISTEMA

+0

“大多数服务不需要如此高的权限级别。如果您的服务不需要这些权限...考虑使用LocalService帐户或NetworkServ冰帐户。 “ - 来自https://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v=vs.85).aspx – MSalters

+0

@ MSalters,是的,不幸的是,我正在使用'QtService'任务及其命令'-i'不允许从我想要安装服务的用户中进行选择(或者我可能没有发现此功能)。当然,我可以通过'sc'命令从'cmd'安装它但是这不是我想要的。 – someoneinthebox

+0

@ MSalters,oh no,my bad。有一种简单的方法可以在'-i'键后用'NT <...>/'来使用另一个系统配置文件。 :网络配置文件名称 - PC名称和本地配置文件名称 - 带空格的名称,我无法在Postgres中注册它们。 – someoneinthebox

回答

3

所以,解决了WinAPI的问题:

#include <windows.h> 

<...> 

static const DWORD MAX_BUFF_SIZE = 256; 
SID_IDENTIFIER_AUTHORITY auth = SECURITY_NT_AUTHORITY; 
PSID pSid = NULL; 
SID_NAME_USE use;  
wchar_t buffName[MAX_BUFF_SIZE]; // Here would be name 
DWORD buffNameSize = MAX_BUFF_SIZE; 
wchar_t buffDomain[MAX_BUFF_SIZE]; 
DWORD buffDomainSize = MAX_BUFF_SIZE; 

AllocateAndInitializeSid(&auth, 1, SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0, &pSid); 
LookupAccountSid(NULL, pSid, buffName, &buffNameSize, buffDomain, &buffDomainSize, &use); 

FreeSid(pSid); 

<...> 
相关问题