我需要检查本地计算机上可用的帐户类型.
我已经找到了如何为当前登录用户执行此操作:
function IsWindowsAdmin: Boolean;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
g: Integer;
bSuccess: BOOL;
begin
Result:= False;
bSuccess:= OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken);
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
bSuccess:= OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
end;
if bSuccess then
begin
GetMem(ptgGroups, 1024);
bSuccess:= GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);
CloseHandle(hAccessToken);
if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdministrators);
for g:= 0 to ptgGroups.GroupCount - 1 do
if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) …Run Code Online (Sandbox Code Playgroud) 有没有办法使用 Pyton 的 gspread API 在 Google Sheets 中操作行?自动调整会很棒,但手动更改大小也可以。
我试图在Delphi和PHP之间交换加密的消息.
从Delphi方面我从这里下载了DCPcrypt v2 Beta 3:
http://www.cityinthesky.co.uk/opensource/dcpcrypt/
对于加密我使用此功能:
function TForm1.Encrypt3DES(psData, psKey: string): string;
var
Cipher: TDCP_3des;
begin
Cipher:= TDCP_3des.Create(nil);
Cipher.InitStr(psKey,TDCP_sha256);
result:=Cipher.EncryptString(psData);
Cipher.Burn;
Cipher.Free;
end;
Run Code Online (Sandbox Code Playgroud)
我正在测试它:
ShowMessage(Encrypt3DES('test','SecretKeySecretKeySecret'));
Run Code Online (Sandbox Code Playgroud)
我得到的结果是Z74E0Q ==我可以使用另一个类似的delphi函数成功解密它:
function TForm1.Decrypt3DES(psData, psKey: string): string;
var
Cipher: TDCP_3des;
begin
Cipher:= TDCP_3des.Create(nil);
Cipher.InitStr(psKey, TDCP_sha256);
result:=Cipher.DecryptString(psData);
Cipher.Burn;
Cipher.Free;
end;
Run Code Online (Sandbox Code Playgroud)
从PHP端我试过几个功能相同的字符串("测试")使用相同的密钥("SecretKeySecretKeySecret")加密,但结果是什么,我在Delphi中得到不同的.我再次成功解密PHP中具有类似功能的消息,但我需要在Delphi中解密消息.
这是我在PHP中所做的,我甚至试图散列键,因为我看到Delphi函数正在使用TDCP_sha256,但结果仍然不同.
$key = "SecretKeySecretKeySecret";
echo base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, 'test', 'ecb')).'<BR><BR>';
echo openssl_encrypt('test', 'des-ede3', $key).'<BR><BR>';
$key = hash('sha256', $key);
echo openssl_encrypt('test', 'des-ede3', $key).'<BR><BR>';
Run Code Online (Sandbox Code Playgroud)
这是结果:
Z05z5Bp4/VY =
L5qmk5nJOzs =
bm7yRdrMs5g =
我究竟做错了什么?BTW我正在使用Delphi 7和DCPcrypt是目前唯一能够让它运行的库.